{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 分类训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x00\\x00\\x00\\x02'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import struct\n",
    "struct.pack('>i',2) # 将2打包为int；>B则打包为Byte"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "![jupyter](./g1.png)\n",
    "![jupyter](./g2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2051, 60000, 28, 28)\n",
      "47040000\n"
     ]
    }
   ],
   "source": [
    "import struct\n",
    "with open('./MNIST_data/train-images-idx3-ubyte', 'rb') as f:\n",
    "    buffer = f.read(4*4) # 4个int\n",
    "    head = struct.unpack('>iiii',buffer)  # 将buffer拆包为4个int，得到元组\n",
    "    print(head)\n",
    "    length = head[1] * head[2]  * head[3]\n",
    "    print(length)\n",
    "    buffer = f.read(length)\n",
    "#   print(buffer)\n",
    "    data = struct.unpack('>{}B'.format(length),buffer) # 拆包为length个字节，得到元组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "47040000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tuple"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "imgs = np.reshape(data, (head[1], head[2], head[3]))  # 重塑格式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "for i in range(5):\n",
    "    plt.imshow(imgs[i], cmap = 'gray')  # 显示图片，cmap颜色设置为灰色\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\feature_extraction\\text.py:17: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n",
      "  from collections import Mapping, defaultdict\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import fetch_mldata\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "mnist = fetch_mldata('MNIST original', data_home='./')  # 从本地抓取（需提前放入mldata文件夹）；也可从网络抓取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'DESCR': 'mldata.org dataset: mnist-original',\n",
       " 'COL_NAMES': ['label', 'data'],\n",
       " 'target': array([0., 0., 0., ..., 9., 9., 9.]),\n",
       " 'data': array([[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mnist"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* DESCR 数据集描述\n",
    "* data 包含一个数组，每个实例为一行，每个特征为一列\n",
    "* target 包含一个带有标签的数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, y = mnist['data'], mnist['target']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000, 784)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000,)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "some_digit = X[36000]\n",
    "some_digit_image = some_digit.reshape(28, 28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(some_digit_image, cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[36000]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 建立测试集和训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([47664,  2838,  1917, ..., 38316, 23065,  9896])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将数据集合交叉洗牌，交叉验证时，每个子集合数据分布均匀，有些机器学习算法对训练实例的顺序敏感\n",
    "import numpy as np\n",
    "shuffle_index = np.random.permutation(60000)  # 生成随机排列序列\n",
    "shuffle_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, y_train = X_train[shuffle_index], y_train[shuffle_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 784)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# X_train\n",
    "tt = X_train[~shuffle_index]\n",
    "tt.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练一个二元分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False, False, ..., False, False, False])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 识别数字5 ，二元分类5或者非5\n",
    "# 创建目标向量\n",
    "y_train_5 = (y_train == 5)\n",
    "y_train_5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ...,  True, False,  True],\n",
       "       [ True, False, False, ..., False, False, False],\n",
       "       ...,\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_5.reshape(20, -1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test_5 = (y_test == 5) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SGD 梯度下降 分类器， 适合非常大的数据集，独立处理训练集数据，一次一个，适合在线学习，\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "sgd_clf = SGDClassifier(random_state = 42)\n",
    "sgd_clf.fit(X_train, y_train_5)\n",
    "\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 性能考核"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用交叉验证测量精度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.8848 , 0.9586 , 0.95945])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 评估分类器比评估回归器要困难得多\n",
    "\n",
    "# 3个折叠，正确率达到 95% 以上\n",
    "from sklearn.model_selection import cross_val_score\n",
    "cross_val_score(sgd_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 需要的类别为正类，不需要的类别为负类\n",
    "from sklearn.base import BaseEstimator\n",
    "class Never5Classifier(BaseEstimator):\n",
    "    # 把每张图都分类成 非5\n",
    "    def fit(self, X, y=None):\n",
    "        pass\n",
    "    def predict(self, X):\n",
    "        return np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False],\n",
       "       [False],\n",
       "       [False],\n",
       "       ...,\n",
       "       [False],\n",
       "       [False],\n",
       "       [False]])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.91325, 0.90825, 0.90745])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "never_5_clf = Never5Classifier()\n",
    "cross_val_score(never_5_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 准确率超过90% ，因为5的图像大约只有10%，你猜一张图不是5， 90%的时间你都是正确的\n",
    "* 这说明准确率无法成为分类器的首要性能指标，特别是当你处理偏科数据集， 某些类比其他类更为频繁"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 混淆矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 评估分类器性能的更好方法是混淆矩阵\n",
    "# A类别实例被分为B类别次数\n",
    "# 想要知道分类器将数字3和数字5混淆多少次，通过混淆矩阵的5行3列\n",
    "from sklearn.model_selection import cross_val_predict\n",
    "\n",
    "y_train_pred = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 与 cross_val_score 相比\n",
    "* 同样执行交叉验证\n",
    "* 返回的不是评估分数，是每个折叠的预测\n",
    "* 每一个实例在模型预测时使用的数据，在训练期间从未见过"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[52009,  2570],\n",
       "       [ 1373,  4048]], dtype=int64)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "confusion_matrix(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 行表示实际类别，列表示预测类别\n",
    "# 第一行 第一列 53272 被正确的分为 非5 ，真负类\n",
    "# 第一行 第二列 1307 被错误的分类成 5 ，假正类\n",
    "# 第二行 第一列 1077 张被错误的分为 非5， 假负类\n",
    "# 第二行 第二列 4344 张被正确的分在了5 ，真正类\n",
    "# 这种衡量方式太复杂，我们可以用更简单的指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54579,     0],\n",
       "       [    0,  5421]], dtype=int64)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_perfect_predictions = y_train_5\n",
    "confusion_matrix(y_train_5, y_train_perfect_predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "\n",
    "## 正类预测的准确率 被称为分类器的精度\n",
    "\n",
    "\n",
    "$\n",
    "\\text{精度} = \\cfrac{TP}{TP + FP}\n",
    "$\n",
    "\n",
    "TP是真正类的数量，FP是假正类的数量\n",
    "\n",
    "\n",
    "\n",
    "$\n",
    "\\text{召回率TPR} = \\cfrac{TP}{TP + FN}\n",
    "$\n",
    "* 检测正类实例的比例\n",
    "FN是假负类的数量\n",
    "![jupyter](./zhaohui.jpg)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度和召回率\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6116651556361439"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score\n",
    "\n",
    "precision_score(y_train_5, y_train_pred) # 4327 / 4327 + 1276"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7467256963659842"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred)    #  4327 / 4327 + 1094"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 说明 检测一张图的时候，只有90%的概率是准确的，而且只有64%的数字5 被它检测出来\n",
    "# 精度和召回率合成单一指标，成为 F1 分数，谐波平均值\n",
    "# 平均值平等对待所有的值，谐波平均值会给予较低值更高的权重，只有召回率和精度都很高时，才能获得较高的F1分数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\n",
    "F_1 = \\cfrac{2}{\\cfrac{1}{\\text{precision}} + \\cfrac{1}{\\text{recall}}} = 2 \\times \\cfrac{\\text{precision}\\, \\times \\, \\text{recall}}{\\text{precision}\\, + \\, \\text{recall}} = \\cfrac{TP}{TP + \\cfrac{FN + FP}{2}}\n",
    "$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6724811030816514"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "f1_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# F1分数对那些具有相近精度和召回率 分类器更有利，这不一定符合你的期望\n",
    "# 有时候你更关心精度，有时你能关心召回率\n",
    "# 训练一个分类器检测儿童可以放心观看的视频，你可能要求拦截了很多好的视频，低召回率，保留下来的都是安全的视频，高精度\n",
    "# 不能同时增加精度并减少召回率，反之亦然"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度/召回率权衡"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "![jupyter](./quanheng.jpg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* SGDClassifier对每个实例基于决策函数计算一个分值，大于阀值为正类，否则为负类\n",
    "* 中间阀值右侧找到4个真正类 真5 ， 一个假正类 6， 精度为 4/5 80%\n",
    "* 在所有的6个 真正的5 中，分类器找到了4个，召回率为 4/6 67%\n",
    "* 提高阀值，向右移动，精度提高，召回降低\n",
    "* 反之阀值降低，召回提高，精度降低\n",
    "* SKlearn不可以直接设置阀值，可以访问决策分数，\n",
    "* SGDClassifier 默认阀值为0 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 如何设置阀值\n",
    "\n",
    "# 用predict_proba得到每个实例属于正类的概率，然后对概率切一下。以LogisticRegression为例\n",
    "\n",
    "# from sklearn.linear_model import LogisticRegression\n",
    "# clf = LogisticRegression()\n",
    "# clf.fit(X_train, y_train)\n",
    "# pred_proba = clf.predict_proba(X_test)[:, 1]\n",
    "# threshold = 0.75  # 阀值设置为0.75\n",
    "# pred_label = pred_proba > threshold\n",
    "\n",
    "# pred_proba是每个实例为真的概率\n",
    "# 假设阈值是0.75\n",
    "# pred_label里True就是概率大于0.75的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([57054.10501787])"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 返回决策值decision_function\n",
    "y_scores = sgd_clf.decision_function([some_digit])\n",
    "y_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "threshold = 0\n",
    "y_some_digit_pred = (y_scores > threshold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 提高阀值可以降低召回率，提高阀值到200000，就错了这个图\n",
    "threshold = 200000\n",
    "y_some_digit_pred = (y_scores > threshold)\n",
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 如何决定使用什么阀值\n",
    "# 返回决策值，而不是预测结果\n",
    "y_scores = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3,\n",
    "                             method=\"decision_function\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000,)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 有了y_scores，可以计算所有可能的阀值的精度和召回率\n",
    "y_scores.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0\n",
      "0.0\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import precision_recall_curve\n",
    "\n",
    "precisions, recalls, thresholds = precision_recall_curve(y_train_5, y_scores)\n",
    "# 精度和召回率会比阈值长度+1，最后一个精度为1.0，召回率0.0\n",
    "print(precisions[-1])\n",
    "print(recalls[-1])\n",
    "# print(thresholds.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib 绘制精度和召回相对于阀值的函数图\n",
    "def plot_precision_recall_vs_threshold(precisions, recalls, thresholds):\n",
    "    plt.plot(thresholds, precisions[:-1], \"b--\", label=\"Precision\", linewidth=2)\n",
    "    plt.plot(thresholds, recalls[:-1], \"g-\", label=\"Recall\", linewidth=2)\n",
    "    plt.xlabel(\"Threshold\", fontsize=16)\n",
    "    plt.legend(loc=\"upper left\", fontsize=16) # 在左上显示标签提示\n",
    "    plt.ylim([0, 1])\n",
    "\n",
    "plt.figure(figsize=(8, 4))\n",
    "plot_precision_recall_vs_threshold(precisions, recalls, thresholds)\n",
    "plt.xlim([-700000, 700000])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_precision_vs_recall(precisions, recalls):\n",
    "    plt.plot(recalls, precisions, \"b-\", linewidth=2)\n",
    "    plt.xlabel(\"召回\", fontsize=16)\n",
    "    plt.ylabel(\"精度\", fontsize=16)\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plot_precision_vs_recall(precisions, recalls)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 通过选择阀值来实现最佳的精度/召回率权衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 目标设定为90%的精度，阀值大概在30000左右 , 设置了阀值为30000\n",
    "y_train_pred_90 = (y_scores > 30000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.659161759612054"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7020844862571481"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "* 获得了一个90%精度的分类器，但如果召回太低，精度再高，也不怎么有用\n",
    "* 如果工作中，需要99%的精度，你应该回应，召回率是多少？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ROC 曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 本质是 真正类率tpr和假正类率fpr（错误的分为正类的负类实例比例）\n",
    "# 与召回/精度曲线非常相似\n",
    "\n",
    "# plt.plot([1,2,3], [1,2,3], 'go-', label='line 1', linewidth=2)\n",
    "# plt.plot([1,2,3], [1,4,9], 'rs',  label='line 2')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "\n",
    "fpr, tpr, thresholds = roc_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ypQpTkcSEREHhMVIX9fpH97OnTu54IILuO2225g1a5bTcURExEEa6YexefPmMWLECHJycnj22WcZM2aM05FERMRBYVH62nv/9xYsWMB5551Hu3btmD9/PqeeeqrTkURExGGa3g8zHo8HgLPPPptHH32UZcuWqfBFRAQIm9J3OkFweP3112nXrh07duzA7XZz6623kpCgKxtERMQnLEo/0gf6BQUFjB49msGDB1OnTh3KyrRvgYiI/F6YlH7ktv6qVavIyMhg2rRp3HXXXXz66ac0a9bM6VgiIhKEwmIhXySf03/ggQfIycnho48+om/fvk7HERGRIBYmpe90gsDau3cvBQUFNGvWjGeeeQaPx6O980VEpFJhMb0fSSP9zz77jE6dOnHFFVdgraVOnToqfBERqZKwKP3SCLjLnsfjYdKkSZx99tnExsby+OOPR/RaBhEROXphMb1fVOpxOkKN2rVrFwMHDmTRokUMGzaMZ555hqSkJKdjiYhIiAmL0q9XK8bpCDUqMTGRwsJCZsyYwYgRI5yOIyIiISospvfDcZq7uLiYyZMnU1BQQGJiIosXL1bhi4jIcQmT0nc6QfVau3YtZ5xxBuPHj+fdd98FwOUKi/9UIiLiIDVJELHWMm3aNLp06cK2bdt49913GTRokNOxREQkTIRF6YfLQH/y5MlcffXVdOvWjczMTC688EKnI4mISBgJi4V8oc5aizGGoUOHEhMTw9///nfcbrfTsUREJMyExUg/VE/qe71eHnnkEQYOHIi1lpYtW3LHHXeo8EVEpEaERemHYuXv3LmTCy64gNtvvx2v10txcbHTkUREJMyFRemHmnnz5pGens6iRYt47rnn+M9//kN8fLzTsUREJMyFxTn9UJrdLywsZOTIkdStW5f58+dz6qmnOh1JREQiRFiUfijYsmULjRs3JiEhgQ8//JCTTjqJhIQEp2OJiEgECYvpfRPkZ/Vff/11Tj31VB566CEAOnTooMIXEZGAC4/SD9LOLygoYPTo0QwePJj27dtzxRVXOB1JREQiWFiUfjD69ttvycjIYNq0adx1110sWrSIE0880elYIiISwcLinH4wDvSLioooLCxk/vz59OnTx+k4IiIiGulXpz179jBt2jQAunbtyrp161T4IiISNMKi9IPhnP6nn35Kp06duP7669m4cSMAMTExzoYSERE5QHiUvoMT/OXl5UycOJFzzjmH+Ph4vvrqK527FxGRoBQW5/SdYq3l4osv5oMPPmD48OE8/fTTJCUlOR1LRETkkMKj9B0a6BtjuOKKKxgyZAjDhw93JoSIiEgVhUfpB1BxcTG33XYbnTt3ZtSoUQwbNszpSCIiIlUSJuf0A2PNmjV069aNp556ip9++ilA7yoiIlI9wmKkb2p4+b61lpdffpmbb76ZhIQE3nvvPS644IIafU8REZHqFhYj/Zq2fPlyrr76arp160ZmZqYKX0REQlJ4jPRr6HWzsrJIS0vj9NNPZ+7cuZx77rm43e4aejcREZGaFRYj/eqe3fd6vTz88MOceOKJLFu2DIDzzjtPhS8iIiEtLEb61Wnnzp2MGDGCefPmcemll3LyySc7HUlERKRaaKR/gHnz5pGens6nn37Kc889xxtvvEFqamr1vLiIiIjDNNI/f34CWAAACs5JREFUwFdffUW9evVYsGAB7du3dzqOiIhItQqPkf5xLOVbv349X3zxBQDjxo1j2bJlKnwREQlL4VH6x9j5s2bNolOnTowePRqPx4Pb7SY+Pr56w4mIiASJsCj9o1VQUMBVV13FFVdcQYcOHZg7d65W5ouISNiLuHP6WVlZnHXWWfz444+MGzeOe+65h6ioiPvXICIiESji2q5evXqcc845PPvss5xzzjlOxxEREQmYsJjer2zv/T179jB06FDWr1+PMUaFLyIiESk8Sv8IX1u0aBHp6em88cYbFbvriYiIRKKwKP1DKS8vZ+LEifTp04eEhAQWL17MoEGDnI4lIiLimLAo/UPN7k+ZMoV7772XYcOGsWLFCjp37hz4YCIiIkEk7Bby5efnU6tWLW688UZOOukkLr30UqcjiYiIBIXwGOljKC4u5qabbqJr164UFBSQmJiowhcRETlAwEvfGDPVGPOVMWbc8RxzoC0b1tGtWzeefvppBgwYoOvuRUREDiGgpW+M+TPgttZ2B1oaY1odyzEH8hTm8v/bu/sYuaoyjuPfX8uy5U2oIAUaEA2GdyiIBXzd8iKlBIGggQpaIKZCECiQKBARNCq+ZSMKNRQFNSKCKMWmFFuUaokWLOpqBYNES7AFFbVAobSWPv5xzmynw27nznbnlrn7+ySTztw5c+fp0+k8c8+955wZZ05mxYoVzJ07l97eXrq7u9vzFzAzM+tgZR/p9wB35vvzgXcOsU2/9aufY79D3kpfXx9TpkwZpjDNzMyqp+x+8O2A5fn+f4CBLqlv2kbSdGB6frim7+EHl44fP36YQ7UGuwDPbukgKs45bj/nuP2c43LsO5QXlV30VwG1Zey2Z+CehqZtImIWMAtA0pKIOGL4Q7V6znP7Ocft5xy3n3NcDklLhvK6srv3H2FDd/2hwLIhtjEzM7MWlX2kPxtYJGkP4ETgTEmfjYhPbqLNUSXHaGZmVkmlHulHxPOkC/UWA5Mioq+h4A/U5rkmu53VhlDt1Zzn9nOO2885bj/nuBxDyrMiYrgDMTMzs9egSszIZ2ZmZs11TNFvx0x+trFm+ZO0o6R5kuZLulvS1mXHWAVFP6eSxkn6XVlxVUkLOZ4p6eSy4qqSAt8XYyXdK2mJpJvKjq8q8vfAoiZtCte+jij67ZjJzzZWMH9nAb0R8V7gGWBymTFWQYuf06+wYfiqFVQ0x5LeBewWEXNKDbACCub4Q8BtefjeDpI8jK9FksYC3yHNXzNYm5ZqX0cUfdowk5+9Sg9N8hcRMyNiQX74BuCf5YRWKT0U+JxKOgZ4kfTjylrTQ5McS+oCbgaWSTqlvNAqo4fmn+N/AwdJ2gnYE3iqnNAq5RXgDOD5TbTpoYXa1ylFv3GWvnFDbGODK5w/SUcDYyNicRmBVUzTPOfTJlcDV5QYV5UU+Sx/GHgU+BIwUdJFJcVWFUVy/CDwRuBi4LHczloQEc8XGMHWUu3rlKI/LDP52SYVyp+k1wNfB84rKa6qKZLnK4CZEbGytKiqpUiODwNmRcQzwPeASSXFVhVFcnwNcH5EfAb4M3BuSbGNNC3Vvk4pjJ7Jr/2a5i8fgf4QuDIiniwvtEop8jk9DrhQ0kJggqRvlhNaZRTJ8RPAm/P9IwB/nltTJMdjgYMljQaOBDw+vD1aqn0dMU5f0uuARcDPyDP5AR+on9hngDZHFegWsaxgji8APg/05U3fiIg7yo61kxXJc0P7hRHRU16Ena/gZ3kH4BZSV2gX8P6IWD7A7mwABXM8EbiV1MX/a+C0iFi1BcLteLXvAUkHAB/cnNrXEUUf+q9iPB74Ze6SG1IbG5zzVw7nuf2c4/Zzjl87Wvm36Jiib2ZmZpunU87pm5mZ2WZy0TczMxshXPTNrO0kjZakLR2H2Ujnom9WEZJOlfT2QZ4b0861EiSdIOnyusfXSfppXZNPAXPy8K0i+zsrTwJlZsNoqy0dgJkNm6uBn0vqJY2LrrkS2BuYKilIE3hcGBE3AUg6DHiZ5uOoRwNjgD9GxNqG554DrpK0a0R8AlgDrM77nwJ8nDTU6JX6F+XpcLcC1kTE+rqnzgNeAk6uazsa2BpYHxFrmsRqZgNw0TerAEl7AQcD7wMmApMiYqGkb5MK6vnA+bntQtIsXjWLSUW6vuhuTSrw9XN+j8rb9yVPZiOpGxDwMHAScH0eA1/vMuCCiKitzDgqIl7Oz50B3ACsllQr5F2kHyDrJC2r208XsC1pIaLPFUqMmW3ERd+sGqYBj0TE8nw030z/EXdEdDc+Kekc4NqI2LvJfr4IXNKwrf+HQl0sx0q6Nd+/Bzg13789/3lfRDybX3M7sFNuMwH4TUSsz6uHnUSaBtrMhsDn9M06nKStgI+QjtZrHsgFdxowRtL9kl6QtJI0ZeegS3W26FpgZ6ArIgTsAzwNPE4q7vsDPyGdXhhF6j2YWvf6bYCjgMclHS/pLmA30rztVwG/AE6UdB6wBNg978PMhsBH+mad71zSefp6kyJiYe2BpOtJ3fdrYoAZuSRdArwUETe38sb1iwLl5YC/n28vkBa1WUX6gbEUuDwiZjW8fhXwMUmzgLXA6aSeggWkHwSnRcTcfN3BtIiY3Up8ZrYxH+mbdbB8Lv8LwMxBnh8jaVfSUrJTgWmSzpF0UEPT44F3N2wbJWmnutsuknYf4D0OzV3yc4DrIuIy0rn/7oj4e973NcCNkubkeBq9CKwkXZdwDOk6gbOB8ZIOJ63Nvo+H/ZltHhd9s862glRQH2nYXuveXw3sCXwZOIt0nrwXeEtD+3XUnefP9gT+W3f7FzCvvoGktwG/JV1gNyEirq+La6Wk0ZH0khYD2YuG7x1JJwIPAceSegXuIV29/yPgBNLCOHuTRiHcJWnbZkkxs4G56Jt1sIhYFxE3DPDUpHyOfRtSUb4XuCEiTiV1oy8psPsnI0K1G+nq+cZ5AJYCB0bEKRHxl4bnJlI3IiAi7s/b+kcOSLoK+C6pJ+Ix0mpsOwBfIw0DPBI4EDictATuIaQr/s1sCHxO36yicld4rTv8fmCypD+Qzt0/1er+ImIdqUeg3jzgPZvodV8/yHOSNAr4AXBnRDyRNx5JWg/8W8BfI2JGXqL1qYh4WtIEIHIPQmPPhJk14aJvVk0P1N1/E/Bj0qx4Adw4jO8zJe+zf3IdSfsCvweWA3Mi4tJa4zxOvzZE8GDSaYm1khon+9mO9IPhnLrXwoa5Ak4gXdlvZi1w0TerptrkPF3AuogISfNJ58p3G643iYiX6h9L2gO4jdRl/2ngV7nH4cqIWJ1n8lubX9vHIN9BkmYDyyJixnDFamY+p29WFaPZ8P+5q7YxIv4HbC/pamAy0AfcImlcXgRngqT9SUP+dpS0n6T9SOPhu2qP8+2A3H6fxjeXtLOkS0lH+I8BF0fECuBo0rn4pZIukrRj+1JgZs34SN+sGsawYdKa/hn28gI895GuiD+cdBX+V4FHSRfFPcTG8+4vbthv4+OuvL/T8/5nkIYCHgb8CfhoRNxda5zPw/cA00kT+fRKuiMizm7y96n/EWNmw0QDzNNhZhUiaVxE/KNh2y61aW83c9/vAI4DZufu+k217SYNGVwREYuatF0A/C0ipm9ujGa2gYu+mZnZCOHuMzMzsxHCRd/MzGyEcNE3MzMbIVz0zczMRggXfTMzsxHCRd/MzGyE+D+izmwFDoyeawAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_roc_curve(fpr, tpr, label=None):\n",
    "    plt.plot(fpr, tpr, linewidth=2, label=label)\n",
    "    plt.plot([0, 1], [0, 1], 'k--')  # 绘制一条斜上的虚线\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "    plt.xlabel('假正类率', fontsize=16)\n",
    "    plt.ylabel('真正类率', fontsize=16)\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plot_roc_curve(fpr, tpr)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9445577245588871"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算曲线下面积AUC，虚线是随机分类0.5到1\n",
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "roc_auc_score(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 召回率TPR越高，分类器的假正类FPR就越多\n",
    "* 虚线表示纯随机分类器的ROC曲线，好的分类器应该远离这条线，向左上角\n",
    "* 是使用精度/召回率 PR曲线，还是使用ROC，关键在于 正类非常少或者更关注假正类而不是假负类，选择PR，反之ROC\n",
    "* 例如：前面例子ROC曲线很不错是因为跟负类 非5 相比， 正类 数据5 数量真的很少"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练随机森林分类器，比较SGD分类器的ROC曲线和ROC AUC分数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 获取训练集中每个实例的分数\n",
    "* RandomForestClassifier 没有descision_function(),但是拥有dict_proda()方法，sklearn中分类器都有这两个中的一个\n",
    "* dict_proda返回一个矩阵，每行一个实例，每列代表一个类别的概率，比如这个图片 70%是5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\ensemble\\weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n",
      "  from numpy.core.umath_tests import inner1d\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest_clf = RandomForestClassifier(n_estimators=10, random_state=42)\n",
    "y_probas_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3,\n",
    "                                    method=\"predict_proba\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       ...,\n",
       "       [0.7, 0.3],\n",
       "       [1. , 0. ],\n",
       "       [1. , 0. ]])"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_probas_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 绘制ROC曲线，需要决策值不是概率，直接使用正类的概率作为决策值：\n",
    "y_scores_forest = y_probas_forest[:, 1] \n",
    "fpr_forest, tpr_forest, thresholds_forest = roc_curve(y_train_5,y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0. , 0. , 0. , ..., 0.3, 0. , 0. ])"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_scores_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(fpr, tpr, \"b:\", linewidth=2, label=\"SGD\")\n",
    "plot_roc_curve(fpr_forest, tpr_forest, \"Random Forest\")\n",
    "plt.legend(loc=\"lower right\", fontsize=16)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9927455622908495"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Rand 比SGD 好很多，ROC AUC的分数也高很多\n",
    "roc_auc_score(y_train_5, y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9854014598540146"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 再看一下 精度和召回率 也很高\n",
    "y_train_pred_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3)\n",
    "precision_score(y_train_5, y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8218040951853901"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "* 选择合适的指标利用交叉验证来对分类器进行评估\n",
    "* 选择满足需求的精度/召回率权衡\n",
    "* 使用ROC曲线和ROC AUC分数比较多个模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多类别分类器\n",
    "* 尝试5 之外的检测\n",
    "* 多类别分类器 区分两个以上的类别\n",
    "* 随机森里和朴素贝叶斯可以直接处理多个类别\n",
    "* 支持向量机svm和线性分类器只可以处理二元分类器"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 解决方案\n",
    "1. 将数字图片分类0到9，训练10个二元分类器，每个数字一个，检测一张图片时，获取每个分类器的决策分数，哪个最高属于哪个，称为一对多OvA\n",
    "2. 为每一对数字训练一个二元分类器，区分0、1，区分0、2，区分1、2，称为一对一OvO策略，存在N个类别，需要N*（N-1）/2个分类器，最后看哪个类别获胜最多\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 优缺点\n",
    "* OvO 只需要用到部分训练集对其必须区分两个类别进行训练\n",
    "* 对于较小训练集合OvO比较有优势， 大训练集合 OvA 速度快，所以OvA更常用，比如svm 在数据规模扩大时表现糟糕\n",
    "* sklearn 检查到使用二元分类算法进行多类别分类任务，会自动运行OvA，SVM分类器除外"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.fit(X_train, y_train)\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ -58874.02779618, -451301.00060928, -241920.39531787,\n",
       "        -167535.6647772 , -329717.98157151,   57054.10501787,\n",
       "        -611294.17554555, -194575.06351243, -833432.23591093,\n",
       "        -708357.74524155]])"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 内部实际上训练了10个二元分类器，获得图片的决策分数，然后选择了分数最高的类别\n",
    "# 返回10个分数，每个类别1个\n",
    "some_digit_scores = sgd_clf.decision_function([some_digit])\n",
    "some_digit_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.argmax(some_digit_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 目标类别列表会存储在classes_这个属性中，按值大小排列，\n",
    "sgd_clf.classes_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.classes_[np.argmax(some_digit_scores)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用OvO策略，一对一或者一对多\n",
    "from sklearn.multiclass import OneVsOneClassifier\n",
    "ovo_clf = OneVsOneClassifier(SGDClassifier(max_iter=5, tol=-np.infty, random_state=42))\n",
    "ovo_clf.fit(X_train, y_train)\n",
    "ovo_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(ovo_clf.estimators_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用随机森林\n",
    "forest_clf.fit(X_train, y_train)\n",
    "forest_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.1, 0. , 0. , 0.1, 0. , 0.8, 0. , 0. , 0. , 0. ]])"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 随机森林直接将实例分为多个类别，调用predict_proba()可以获得分类器将每个实例分类为每个类别的概率列表\n",
    "forest_clf.predict_proba([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 评估分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.85872825, 0.85579279, 0.87973196])"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用交叉验证评估SGD的准确率\n",
    "cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.91121776, 0.9080954 , 0.90898635])"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将输入进行标准化 ，可以得到准确率 90 %以上\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))\n",
    "cross_val_score(sgd_clf, X_train_scaled, y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 错误分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 项目流程\n",
    "1. 探索数据准备的选项\n",
    "2. 尝试多个模型\n",
    "3. 选择最佳模型并用GridSearchCV对参数进行微调\n",
    "4. 尽可能自动化\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 确定了一个相对合适的模型，进一步优化，分析其错误类型\n",
    "* 查看混淆矩阵\n",
    "* 使用cross_val_predict()进行预测\n",
    "* 调用confusion_matrix()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\顾哲\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[5733,    2,   21,    9,   10,   47,   47,    8,   42,    4],\n",
       "       [   2, 6445,   44,   28,    6,   37,    8,   14,  146,   12],\n",
       "       [  51,   36, 5337,  106,   74,   24,   86,   51,  175,   18],\n",
       "       [  52,   43,  134, 5339,    1,  222,   34,   62,  150,   94],\n",
       "       [  22,   26,   43,    8, 5350,    6,   52,   29,   90,  216],\n",
       "       [  74,   38,   32,  187,   86, 4605,  110,   25,  173,   91],\n",
       "       [  38,   23,   44,    2,   36,   88, 5639,    2,   46,    0],\n",
       "       [  24,   23,   66,   28,   58,   11,    7, 5812,   23,  213],\n",
       "       [  52,  128,   73,  164,   14,  153,   56,   20, 5066,  125],\n",
       "       [  42,   32,   31,   88,  164,   37,    2,  226,   87, 5240]],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_pred = cross_val_predict(sgd_clf, X_train_scaled, y_train, cv=3)\n",
    "conf_mx = confusion_matrix(y_train, y_train_pred)\n",
    "conf_mx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib的matshow 函数来查看混淆矩阵的图像表示\n",
    "plt.matshow(conf_mx, cmap = plt.cm.gray)  # matshow将矩阵显示得像图像，数值越大颜色越浅；cmap = plt.cm.gray设置色域为灰色\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 看起来不错，大多数图片都在主对角线上，说明它们被正确分类\n",
    "# 数字5 看起来比较暗，说明1. 数字5图片较少  2. 分类器在数字5上执行效果不如其他数字上好\n",
    "# 假设把焦点放在错误上，为取得错误率，而不是错误绝对值，需要将混淆矩阵中每个值除以相应类别中的图片数量\n",
    "\n",
    "row_sums = conf_mx.sum(axis=1, keepdims=True)\n",
    "norm_conf_mx = conf_mx / row_sums"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 用0填充对角线 只保留错误，重新绘制\n",
    "np.fill_diagonal(norm_conf_mx, 0)\n",
    "plt.matshow(norm_conf_mx, cmap=plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 每行代表实际类别，每列代表预测类别\n",
    "# 8，9列比较亮，说明许多图片被错误的分类为数字8，9\n",
    "# 类别8，9行也偏亮，说明数字8和9经常会跟其他数字混淆\n",
    "# 有些很暗，比如行1，大多数数字1都被正确的分类，一些和8混淆\n",
    "# 5和3是错误最多的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 结论\n",
    "* 改进数字8和9的分类\n",
    "* 修正数字3和5的混淆\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何优化分类器\n",
    "* 尝试多收集这些数字的训练集\n",
    "* 开发一些新特征来改进分类器\n",
    "* 优化分类器算法\n",
    "* 使用pillow或opencv对图片预处理，让显示模型更突出\n",
    "* 分析单个错误"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAccAAAHBCAYAAAAcpXCvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOydd3TT573/X5Ily5L33sYLGy+wMcNAsAEzwkiaZq+bpkludjpu09vbX3vb5t57epv23vQ2aVNOm7ZZZJYkkAAJ0xgDxhgP8N57yEOyJVlb+v3B+X6LGSGAJZNEr3N8EizJ30fS93k+z/MZ74/E6XTiwYMHDx48ePgH0tkegAcPHjx48HC94TGOHjx48ODBw3l4jKMHDx48ePBwHh7j6MGDBw8ePJyHxzh68ODBgwcP5+Exjh48ePDgwcN5yC7zuKfOw4OHC5HM9gCuEs989uDhQi46nz0nRw8ePHjw4OE8Lndy9ODBgwcPHtyO0WhEr9czPDxMUFAQfn5+BAUFue36npOjBw8ePHi47qivr2fr1q3k5+fzwx/+kJ07d7r1+i45OdrtdsbHx+nt7WXXrl0YjUYcDgcSiYRNmzaRnJxMbGysKy7twYMHDx6+AgQEBBAfH4+Pjw9HjhxhfHyc1NRUcnNzUalULr++S4xjdXU1ra2tNDc3U1FRgdFoxGw2Y7fbcTgcZGdnk5eXR0ZGBl5eXq4YwpcGs9mMw+HAbrejVquZmprCYDAwMDCAzWbD6XQikfwjXuzt7U1iYiLh4eH4+/vj7+8/i6P34MHDlw2LxcLAwAA9PT0MDw9zrr62SqUiJiaG1NRUAgICZnGUEBQUREpKCjk5OUxNTeHl5cXAwACpqanI5XLkcrlLrz/jxtHpdPLaa69RVlZGQ0MDc+bMwWw2YzQa0Wg0VFdXk5GRwebNm/npT3/qlh3A9YrT6WRkZASr1YrJZOLQoUMMDAzQ3t7Orl270Ov1FxjHsLAw7r33XgoLC0lLSyM7O3tWxi382O128fdSqRQvL69p43UX545D4NxJf+6YpFLprIzx68r597ArcDgc4j3pcDjE30ul/4gcSSQSl3/3drt92vw4H6lUKv7MBk6nk7GxMfbt28c777zDoUOHpo1zzpw5bNy4kccee4zs7GxkstlLS4mIiCAgIIA777wTvV4PwOjoKGNjY3h7e7s8/ii5TFeOq0r9fuGFF+jt7cVsNrNlyxZSUlKwWq1s27aNbdu2MT4+jr+/Pzt37iQ1NZXg4OCrG/2XmImJCZqbm3n88ccZGhrCZrNhtVqx2+3YbDbMZvNFJ5eXlxcKhYLQ0FCKi4v593//dxISEtx2AjeZTJw+fZqWlhaqqqrYtWsXWq0WuVzOhg0buOeee1i5ciUKhcIt4zEajQwODvLBBx8wNjaG2WyeNtb+/n5iY2Px8fEBwM/Pj+LiYhYvXnwtG7Mvq2V1eymHXq+np6eHlJQUvL29XWaY3nzzTZqbm2ltbaW0tBS73Y6vry+LFi1CqVSiUqkIDg5m3bp1pKWlzXhYR7gP//73v1NTU0NjYyODg4MXPK+wsJAHHniAjRs3ut1rZjQaGRoa4uGHH6apqYnx8XGsVit+fn54e3uLz5HL5QQHB/Pf//3fLF26lMTERLeO81wcDgddXV14eXmhVqt54403yM7OJicnh2XLls3UZS56U7pkW1BYWIhOp8PhcJCenk5oaCgOh4PNmzdz6tQpzpw5g06nw2AwYLVaXTGEaRiNRnbt2kV/fz9SqZSMjIyLPs/Ly4vg4GBSUlJQqVTiTtMVWCwWRkdHGRoawmg0EhQUxOLFi/H39/9cw6LRaHj33Xex2+20t7dz9OhRoqOj3TLRLBYL+/fv5+DBgzQ1NTE4OEhPTw8mkwmpVMqxY8eQSqW0tbWJk8rPz2/G3B82m03cOPT09FBdXU1/fz9qtZqqqiqmpqaw2WzTnj8xMUFHR4e4A1YoFPT19VFdXc2qVatITU3Fz89vRsb3dUSr1Yru//b2dkwmE3q9nubmZux2O1NTUwwPDxMbG4tCocDX15cNGzYQFRWFr6/vNV/fYrEwNjZGZWUlo6OjSKVSEhMTcTqdeHt7I5PJxNNSS0sLXV1dFBQUsGTJEhYvXjwj82Z8fJyGhga2b99OdXU1w8PDjI6OYjKZCAsLw9fXF5lMRktLC9XV1fj4+JCbm0tYWJi4aXMnVqsVp9OJSqViw4YNpKWlERISAkBXVxdNTU3U1NTw7rvvYjQaWbFiBXPnznX7OOHsaT8iIgKpVIpSqWTz5s2EhYURERHh8mu7xDguWrTogt85nU7y8/OJiYmhu7sbnU6HzWab5gJxFSaTiV27dnHixAkA1q5de9HnKRQK4uLisNlshIaGikd3hUIx4+4Fh8OBzWYjLCwMmUxGYmIid95552UXjba2Nt59913MZjNqtZozZ85wyy23zOjYzsfpdGKxWNBoNOzevZvPPvuMzs5O8XGJRILT6aS5uRmtVktdXR1Go5Hi4mLi4+NnzDMwNDSEwWBAq9Vy8uRJPvzwQ9ra2tBqtej1eqRS6QXfk0QiYXx8XDyR2+12mpubOXXqFDKZjNDQUFQq1ay5ub5s2O12LBYLFosFk8lEV1cXJpMJh8PB0aNH0el0jI+Pc+TIEfH5VqsVpVKJw+HAx8eHkJAQbrjhhhkxjjabDY1GIxrGpKQkUlJSLnje8PAwPT097N+/H41Gg8FgIDs7G6VSec0GcnJyktbWVnbs2IHdbkcmkxEWFoZSqSQpKYmQkBDkcjmDg4P09vai1Wr57ne/i5+fn1uNo1QqRaFQMGfOHODsZ3f33XezZMkSoqOjAairq2Pfvn0MDQ2xZ88eAgMDCQwMnFXjKGxeBWPuLtzmUDYYDFRXV1NeXk5vby+RkZEztnu8HBKJBIVCgd1up6enh9///veXfX5gYCCJiYl8//vfZ+nSpaSlpc3omMLCwiguLmbhwoXI5XKUSiX+/v6XdTudewrz8fERd1WuZGJigoaGBo4fP86rr746zXV5PsPDwwwPD1NRUcH3vvc91q9fPyM3tNVq5dlnn+XUqVN0dXUB/4gzCu7nyMhI5syZg5+fHzabDYlEQkBAABKJhJGREdrb21Gr1UxMTNDY2Mhzzz1HfHw8vr6+4s7Zw8VxOp3YbDaGhoaoqKigtraWgwcPcubMGTEepFAoxAU4JyeH5ORk0tPTWbFiBU1NTXzyySfs2LGDBx98kG3bthEXF3fN41KpVGRmZvLSSy8hl8svuZ4I43/xxRf5+OOP2bp1K2vXriU9Pf2aE0/i4+MpLi5GoVCQmppKXFwcUVFR4uOCl6iqqoqGhgbMZrOYoOhOFAoFMTEx/PnPfxY3ioGBgdPWnOzsbIKDg0lNTeXee+/lxIkTSKVSbr755q9d8qRbjKPgBnvxxRcZGRkhJyeH+++/n7i4OLck5Pj5+fH000/zjW98g97eXiorKz/3+cPDw2JiTHV1NXPmzJlx4+jl5YWPjw/h4eFIJJLLJrJYLBb27NnDZ599htPpJDo6moyMDFatWiXGC2Yam82GwWDgpZdeorq6msbGRjEWqlAoiI6OFt1Dfn5+lJSU0Nvby9jYGE6nk+rqamJjY2fEODqdTtRqNXq9XlxUAgMD8ff3Jzg4mG9/+9vMmTOHsLAw5HK56JEQXNS9vb1UVFTwf//3f5hMJmw2G5OTk0xNTWGxWK55fF9lDh8+TGNjI42NjTQ0NDA2NibGqpYuXUpYWBiJiYnk5OSIpyF/f398fX0xm80MDAywe/dumpubCQwM5I477pjxOJawsbzUHHI4HBiNRmpra5HJZOTl5TF37twZWX+8vLyIiIhg9erVqFQqfHx8xA2r3W5Hp9NRU1PD2NgYoaGh5Obmipu42UChUODt7X3JRCkhrwGgr6+PhoYGDAYDvr6+14WB7O/v58SJE3zyySfk5eWxatUqcnJyZvw6LjeORqOR9vZ2KisrxV1IUlIShYWF+Pv7u+XDlslkZGdnk5yczMjICGFhYRd9npBhVlVVhcVioa6ujtHRUYxGo0vG5eXlddn3b7FY0Ol0tLS0UFJSwrFjx5BIJMybN48FCxaQnJzsss/QarUyOjpKaWkp9fX1DA0NARAXF0dMTAyZmZksXryY8PBwfH196evrQ6vVMjY2Jr5+pgyPEHvQaDTiCSElJYWwsDBCQ0O58cYbiY6OxtfXF6lUKk58YZHy8/Ojp6fnguxFDxditVrRaDRMTEwwNDTE/v376ezspKenB7Vajb+/P2FhYcybN4+YmBiio6NJTk4mOzsbX19fvL29MZvNYjy4traWgYEBVCoV+fn5rFu3jsjIyBkd8+eFPcxmMyMjIzQ3N9Pd3U1cXBwLFy684NR0Lfj4+IiuSYGpqSn6+/vp6OigtLQUo9FIamoqa9asITg42OWlCJficp4mk8kkbnD1ej0ajUaMU840JpMJo9HI+Pg4gYGBF3wmDoeDnp4esQwQoL29nSNHjrBnzx6cTidZWVkzPi5wsXG02+309/fz17/+lb1799Lb20t2djaZmZksWLDAlZe+KCqVijlz5og+9/NxOp2YTCZGR0fp6OjAx8dn1hfQ0dFRzpw5w69+9SuampoYHR1FoVBwxx13UFRU5NJMXyGx4syZM6jVauCsQd+yZQvr16+nqKiIgIAAvLy8MJvNlJeX09bWJr5+7ty5JCUlzchYvLy8+OY3v0lzczNqtZqcnBxWr179hb0PY2Nj1NTUiKdOmUxGcHAw/v7+s5IUcb3icDjQarUcPnyYY8eO8e677zI5OUl8fDw5OTnccsstLF68mJSUFCIiIi7weDidTqxWKyMjI7z66qucOHGC06dPk5GRQVFREcXFxaxYscKt82pkZISSkhJefvllBgYGuOOOO3j00UddOgabzUZvby9vvvkmpaWlHDlyhKioKJYvX85TTz11XcW4zzd6g4ODHDt2TExuc4VRFBgeHqa1tZUDBw6wdOnSCxJtpqam+N3vfodOpxPDOUNDQ0xMTKDX65mYmHCZ58dlxrGzs5PKykp++ctf0t/fz8TEBHB2wYyKimJycvILxdjchU6no7u7m7/+9a/s2rULtVqN0+kkICDAbWUJAoIraufOnVRVVXHy5El6e3vx8/OjoKCAf/3Xf2Xx4sWEhoa6dBw+Pj7ExMQQHBzM5OQkcrmcn/zkJ2zYsIHU1FSUSiVSqZSysjLeeOMNPv74Y7Rarfh6we05E0ilUjZv3sz69eux2+14e3ujVCq/UKJUT08P5eXlbN++XXQLBwUF8f3vf5/s7OxZL3a+XpiamqK3t5cf/vCHNDY2YrVaSUlJobi4mEWLFrF48WJ8fHxQKBTI5XK8vLzEjNTx8XEOHTpETU0NLS0tjI6OolQqSUlJ4bHHHhNPakql0m1zXq/XU15ezu9+9zt6e3uRy+W8+OKLLFiwwGWhCIfDQUNDAydPnuTll19GrVajUCi46667ePTRR0lPT78uDKPgZv7kk0+orq6mp6dH9Pio1Wo6OzuxWCyEhYURFxc3zVU8k7z11lv84Q9/wGg08tprr007OQo1q5OTkzgcDvHkKIimSKVSAgICXPZdusw4ajQampub6ejomJZi39nZSUlJCXq9nlWrVpGQkHBJN6c7cDqd4k6pqqqKw4cP09/fT0hICMuWLWPVqlXEx8e7bTwGg4Genh4++ugjjhw5Qn9/P1qtliVLlpCenk5mZiYLFy4UM+BciUKhICoqiptvvpmamhrUajXLly8nLi5OTHzQ6/X09/dz+vRpxsfHxV2cTCYjPDx8RhNdriZG43A4qK6upq6ujsnJSeCsLFVsbCwFBQUEBwdfF4vVbGM0GqmqqqKsrIyamhrkcjlJSUls2LCB5cuXk5SUNM0VarVaGRwc5NSpU/T399PX10dTUxNyuZzw8HBiY2NJSUkhJSWFhQsXEh8f75YQisPhYHBwkPb2dnGDLrhzMzIyxBi5qwx0W1sbZWVlfPbZZ7S2tqJSqYiOjiYrK4uEhAS3CmdfiubmZgYGBuju7ubTTz+lq6uLsbExdDodcPZeEOYKnD0F9/X1kZCQgFKpnNGxTExMMDAwcNHv41IiHsJjUqmU8PBwl+WtuMw4GgwGRkZG8Pb2FmNAQhyvoaGBPXv2YDKZKC4uvmxtn6twOp2YzWZOnz7Ntm3bOHToEBMTE8jlclJTU/mnf/on1q9f77KdycXQarXU19eLu05fX18SEhK4++67Wbp0KSkpKW7J8IWzUnVRUVE8+OCDHD58mOrqaubPny9e326309vbS2dnJ729vWLNqlBEHB8f75Z6pIshZCdOTU1x+PBh6urqxISNmJgYcnJyyM3Nddtneb2j0+koLS3ljTfeYHR0lKKiIlasWME999xDbGyseEK3Wq1i/Wh1dTV/+9vfaGxspL+/H6VSyZYtW1izZg2pqalkZmYSGBjotvcgnGKrq6vZv38/p0+fpr+/n4cffpiCggKWLl3q0nXG6XRSX1/PwYMH2bFjB3BW5SUyMpLY2FgMBoMYv5PL5WIdpjux2+0cO3aMEydOcOrUKaqqqi5wm577b6vVysTEBDU1Nfj5+RERETGjm3KZTCaGNYRNqnBKPNcgCtm15yJko9tsNrRaLSqVCrlcPmMbH5co5MDZN2Mymejt7cVut6PVajl06BDvv/8+PT09TExMoFAoWL9+PRs3buSJJ5642ktdNQMDA5w5c4YnnngCtVqNwWAAYOXKlWzcuJEnn3xSLAVwF+Xl5ezfv5+f//znKJVKbr75Zp599lmys7Nn9Iu/EgSZOKfTKU4Mo9FId3c3d955Jy0tLeKJ0dvbm6SkJP74xz+Sm5s7o0kPV8LY2BhtbW28+uqrfPjhh4yMjAAQHR3Ns88+y3333Ud4ePjV/vnrIxZw5Vx0PjudTs6cOcPWrVvZtWsXDz30ELfddhtpaWnT7jmr1cqhQ4c4ceIE1dXVfPrpp0RERJCZmcmaNWvYtGkTUVFR4nfu7hP5mTNn2LdvH//xH/9BYWEhRUVFPPjgg6IQhTvGU15ezuuvv84bb7yBwWAQPweZTIZSqcTPz4+QkBA2bNjAli1byMvLc1vW6tTUFH19fWzevFnczF5s/T//xCZkrz744IOsXbt2Ruuqd+7cyYEDBy6IW588eZKwsDASEhLo6uqipqaGgYGBC8YoHL5iYmL4zW9+Q2Fh4dV4It2nkANndwQqlUp0SZrNZoKCgpg/fz5Hjx7lnXfeEd1xXl5e3HHHHRfNVnIVQgbZRx99hFqtnpaRarVaaW5u5m9/+xtbtmwhMjLSbQLfkZGRzJ8/ny1btlBaWkpTUxPvvvsuFouFqKgogoKC3O6akUgkFy2uF9xkwo2qUqkoLi5m9erVZGVl4efn53bDKOjVHjhwgPLycg4cOMDExAROpxMvLy9iYmLEJCIPZ5FIJMTHx3PnnXeKscU5c+aIHpO2tjaampqorq6mrKxMdLlt2LCBdevWkZycTGJiohibmo3PdmRkhIqKCv7+979z6623sm7dOnFz5s7TWWpqKrfddhvJyclMTk6KiSNC1ufQ0BDd3d18/PHHdHZ2kpiYKIoizJkzx6UhHGGTazKZsFgs4rwV5rKPjw8rV64kPj6eyMhIbDYbHR0ddHV1UVtby4EDBzCbzSQlJZGVlTUjn2t+fv5FpfxWr16Nr68vQUFBaDQaBgYGprl64ewBTFDxUSqVlJSUMDk5KYackpKSiIiIuOrQjkvvGqlUKu6K/Pz8CA0NJSMjAz8/PzHzcnh4mPr6etra2sjMzHS5cRTcu1VVVZSWlnL48GHxxCgwMTFBS0sLAwMDpKSkIJfL3WYcQ0JCSE1NZd26dbS0tKDRaDhy5AjBwcEkJiYSGRlJTEwMgYGB+Pr6zlpXDkHOKSwsjMHBQVEMOCcnh6Kioms5lV01FosFvV5PdXU1hw8fpry8nNbWVuAfMQupVMrw8DANDQ0kJycTEhIi7j6/zgQHB7N48WJycnLERC+hBKKiooKTJ09SXl7O0NAQYWFhxMfHs27dOrZs2UJERMSshEXOpaenh6amJtra2vje975HQUEBCQkJbh9HWFgY+fn5JCUlodPpGBsbY3JyEq1Wy8DAAC0tLUilUiYmJqitraWxsRGlUonZbCYnJwez2UxsbCze3t4zvskQBBqE+k6z2SxufIWa6w0bNpCSkkJ8fDxWq5X6+nrq6+uZmpqiu7ubyspKSktLCQ0NJTQ09JpjkLGxsRc1jhkZGchkMrEsyGg0XiA1arVa6evrw2g0iuu6cNBRKBRMTU2h0WiIi4sTJTavZLPuMrfq5zE5OUlXVxe33XYb/f39yOVy7rzzTn7wgx8wb948V1xSxGQy0dfXx1133UVra6sYhL4YUqmU++67j/vuu8+tskUCP/jBD6iqqqK9vZ3BwUGxE3ZUVBSbNm2ioKCAdevWuX1c5/Jf//VfHDhwgNLSUmJiYnj66ae59dZbZ0Vuqru7m+rqan784x9fsNM8d1IEBAQQFRXFN7/5Te69915RS/cK+Eq5VS9Fa2srf/zjH3nvvfewWCyEhoby1FNPkZubS1JS0nXVk/W5554TdU0PHjw444kjM4XRaGRsbIxPP/2UI0eOUFtby+nTp4GzXqOcnBx+/etfk5iY6DIPUWdnp3gilEgkhIWFER0dzeLFiy/6/KmpKY4dO8a///u/U1tbi9ls5je/+Q2rV68mLy/PJWP8omg0GrHTikajAf7R+eRHP/oRU1NTREZG8txzzxEUFHSp/JGLzmevX/ziF5937c998GqRy+WoVCrR5TU5OcnIyAgrVqwgKirKpbtQs9nM0NAQr7/+OiMjI0gkElHyKTMzk4cffljUCp2YmGD+/PnMnz+f1NRUl43pUmRnZ5ORkUFkZCQOhwODwYBarWZ0dJSmpibKysrYuXMn27Zto7W1FbPZ7PZxqlQq9Ho9p0+fRqfTicLF+fn5X7jUYiaYnJzk/fff57nnnqO3t1fcTV4Mq9WKXq+nsbGR2tpaWlpaxGSDL7hbf25GB+8+fnG5J1itVhobG3n++efZunUrJSUlLFiwgM2bN3P//feLcoXCTr6zs5O+vj4GBgbEn9HRUTEj1F1u9VOnTtHW1kZ9fT1RUVEEBARcl5KAQrhJEE3Iz88nPT0df39/rFYrDQ0NHDt2jKmpKUJDQ13igfH19SUqKoq5c+cyb948kpOTiYqKuqTXTlAA8vLyQiaT0dDQINaMX6qJg7vw9vYWFX8ET5qgzpSUlITBYODUqVM0NjaSkJAwTdbvHC46n2elWZfgkktKSqK7u5uhoSGGh4fR6/Uul/KSSqX4+voyZ84c/P39xW4Yfn5+BAcHs2jRIlpbWxkeHnbpOL4IsbGxeHl54e3tTUBAAF1dXWKa+tjYGGNjYwwPD2O1WtHpdGg0GgICAkhPTyc4ONgtC1NCQoJY7F9XV0dvby8Oh4OPP/6YG2+8kdjYWLdIBAr3VGhoKHa7HR8fH+RyOU6nk4iICLFdz8DAgNg/02QyUVtbi8lkIjAwkHnz5s1a0tP1gtlsFpWYGhsbxZjZyMiIKPLudDqRyWQEBQWJXTnORaFQ0NTURGBgIKGhoSQnJ7u8ZCY7O1vs9bd//36xnjI5Odll17waJBIJcrmc0NBQfHx8CAsLIygoiJCQEM6cOYPZbKa5uZnDhw+LWd+C63+m8Pb2vqK/J5VK8ff3Z/HixQwNDbF9+3Y6OzsZHx+fsTFdLeduZs9/T+Hh4QQGBiKVSqmtrZ1Wg/1FmLVOlhKJhKysLBoaGmhqasJkMmE2my+YaDONUJ6wevVqvLy8SElJYf369WJGm8Ph4J133hE/9NleKKOiooiKiqKwsBA4m4W5bds2ysvL6erqoqenRyx2rq2tRafT8cQTT5CTk+MW5ZeIiAjS09MpKCigra1N7NTw/PPPEx4ejkKhcEvsR6hle+CBBzh27JiYROV0OlmxYgWDg4McOnSIzz77jMnJSVEMQK1WYzKZ0Gq13H333ahUKreW7lxvGAwG3nnnHZqbm5mcnEQmk9Ha2kpbW5uYdS4kNymVSkwm0wUanV5eXoSGhpKQkEBubi733XcfCxcudOnnumHDBlHG8Ne//jUOhwOTyURSUtKsz+FL4evri6+vLzExMWRkZJCVlYVCoeCNN94Qk/EyMzNZtGjRrNaCCyxcuJDu7m6cTqcoFXk9YzAY8PLywt/fn7a2NnQ6HXa7/QvHcmevzfM5CK2DQkJCXF53JnxYzz77rPhv4bQwNTVFVVUV5eXlYuA8Pj7erbValyMkJIRHH32Uhx56SKwlrampYffu3Rw8eJB33nkHgHXr1nHPPfe4ZUyLFi0iNTWVtLQ03nvvPU6cOMHg4CDvvfcek5OTPProoy4fg1QqJScnh3nz5vHggw9O6/guk8lwOBzcdtttVFZW8sorr7Bnzx5xcgvatQcOHGDFihWz7iqaTYQONkIRf05OzgVp9nA2brto0SJCQkIucJ0bDAb27dtHZ2cnzc3NvPzyy7zwwgsuX+Dnz59PYmIiarWaiooK/vKXv5Cfn8/cuXOv2xikQEhICCtWrCAvL4+1a9fy1ltvsWvXLh555BG2bt1KcXHxNb8HoWbR4XCIhvmrTl9fHydPnmRoaIhPPvkEm832hUtRrtk4Cm2gKioqsFqtLFy4kLlz535u1qlQoC0o/MvlclG5wl1Zbxe70XQ6Hfv27WN4eJigoCBRv3M2st4uhUQiEU+EPj4+qFQqlEolXV1dNDY2MjIywtDQkKiF6g4E98+aNWvo6+tDp9PR0NBATU2NuIjm5OS4PBP5ckLu3t7eZGVlsXTpUkZGRti/f7/4mNVqpaSkhIiIiK+1cfT39+fJJ59kamoKuVx+SREHb29voqOjLyorZrFYUKlUvPXWW6JYuVAn68pTnEwmIyAggNtvvx2bzUZ9fT1/+MMf+N73vkdycvKsZ9R+HhKJRBQFyMvL4/Dhw3h5eTE6Okp9fT2xsbHXnPzS1dXFtm3bMBqN5OTksGTJEubOnfuFv5Oamhrq6+uvaQznMzk5idFonFEheovFIvaV7erqEk+MQh/SL8o1G0ehFmbHjh2YTCaxmbmiAm4AACAASURBVOalFkJBtWRkZITGxkbGxsZQKpUsXrxYbDc0G0xOTtLT00NpaSmTk5MkJiayZs0aMR55PSLUJgUEBIilHYDYL85dCHGU+fPns2zZMsbGxmhubqarq4vAwEBOnDghxvNcgaCMIhRbX2oRlEgkREZGkpeXx9jYGOXl5ZhMJnHhrqmpYfny5S4Z45cFpVLJbbfddtWvt9lsGI1GUVXH4XC4tUxGJpNRWFhIT08PWq2WDz/8kE2bNhEcHHypZIzrCsFbFR4ejo+Pj5jZ393dfc3GUfDmaDQaVq5cidPpJCoqSkyc+zwjKbSgq6urE8c5ExudwcFB+vr6xHCaIJbg7e0t/v1z/x8QO3QIWqvC+BwOB3q9XiybqayspKenB7PZjFwux8fH54pO39dsHC0WC7W1tVRXV2M0GklKSmLNmjWXPLL39fWJQtXHjh0DIDk5mW9/+9vExMRc63CumnfffZcdO3ZQXl4uJuYI6hrXaw2cwWCgt7eXF198kaNHj4oSaZ/XecSVSCQSbr/9dubPn8+uXbvEif23v/2NO+64wyWJORaLBY1Gw6effoqvry/x8fEsWbLkcyduYWEhqamp1NTUcPz4cVFw2WKxuL0B7VeN3t5eqqqqePrpp3E6ncydO5dbbrkFX19ft8b+br/9djIyMjh69Cg7duxAp9Nx//33u+3610pISAgJCQkuSQwcHx/n/fffZ+/evUgkEvLz84mLi7tkzbTQraikpITy8nLgbF3sTMzn7du386c//UlsfB0TE8PatWuZN2+eeJIWvE7COqxWq9FqtWIzCzi7KdPr9bz++us0NzczPj7O4OAgVqtVjIEvX778ija/12wcZTIZycnJqFQqurq6+Oijj5DL5SxatIi8vDzkcjmtra0MDg6i0Wg4efIkbW1tNDc3Y7VaWbt2rdiLz92JEGazGY1Gw4svvsixY8dob28nKCiIG2+8kaKiIkJCQq4rwyhkWWo0Gl555RXq6+sZHBykt7cXg8FAVFQUTz75JMXFxbOapefv789NN93Enj17mJqawmw2MzU1JWpKziRdXV288sor7N+/n4KCAm677bbLuu/Gxsbo6Oigt7dXTMzxcHUIHWROnz7NiRMn6OzsZGBggISEBFasWMHChQtZs2aN22N+CoUClUpFYGAg3d3d9Pf3u9ytO5OcK8gdFBQ0I63pUlJS+NGPfsRPf/pThoeHMRgMPP/889xwww3Mnz+f5cuXExsbK7rKp6amaGpqoqWlhSNHjlBaWoparcbb25tly5bNyAZ82bJl6PV6du7cydjYGO3t7dTV1YnqWnK5nMLCQrFX6JkzZ2hvb2dkZESUhBQQxPCNRiMWi0XsF6xUKtmwYQPp6elX1IFnRoxjYmIi8+fPx2Aw0N7eTklJCePj4wwNDeHt7U1bWxuDg4OiH9hgMCCVSsUvZPny5W6fPIK6Qm1tLfv372dgYACbzUZGRgYrVqwgKyvLZcZa6ERvs9nEtOpzkxoEtQchE9DhcKBWqxkfH2d8fJz+/n727dtHe3s7Op2O1NRUkpOTiY2NZf369aSnp89oEpFOpxPdlZfbLExNTaHX6wkNDUUul4suz3NlnWYKjUYj3m+NjY1ERETQ19fH+Pj4tFY2wmdtMplobGykr6+P1tZWRkZGxBiEkK7u6e14eSYmJpiYmBDvSUF8ob6+HovFgkKhoKCggKKiIrEhsrsREovCw8Mxm80YDIbr3jgKuRjNzc10dnYyNTVFenq6KIN2rQQHB4udhmpqasS6UKlUyujoKBMTE8TGxooNq7VaLc3NzbS2tnL8+HHRMCYnJ7N8+fIZkbpLSkpi5cqVYn20VqsVFcukUileXl7i7wHq6+vp6+tDo9GIvxOMaGRkJEFBQYSGhiKRSMjMzBTzMlatWkV0dPQVrT/XbByFWNOjjz5KcnIyv/jFL0S5KSFBQlichDcSFRVFTk4O9913H0uWLCEtLe1ah3HFaLVaSkpK2Lp1K1VVVYSEhJCUlMSdd97JTTfd5NJuEiMjI6JbIDIyktDQ0GlqGBaLhdHRUQYGBrBYLNhsNnbu3ElTUxOdnZ1iJq1CoSA0NJTHHnuMrKwsEhMTZ6y5sIDD4aC1tZWgoCCio6Mvm9TQ399PY2MjQ0NDWCwWrFYrY2NjDAwMEBoaOqPx2/r6eo4fP87JkyeBs0Lyx48fJy4ujqysLPE7PDcO8YMf/IDu7m40Gg0mk0mUz1IoFKSlpc2K7N31gBC/uVjhvnCyFv4r6Kx+8skntLa2Mjo6KsbpV61axQ033MDKlSuJiYmZ1c2GQqEgIyODhoaGafGp6xWr1crk5KToyZJIJDz44IMUFxeTkpJyzX9fpVKRlpbG888/z+uvv87WrVvp7+/nzJkznDlzhu3btwOISlzCaVtAIpGQkpLC3XffzT333DMjc1nQ5E1NTWX37t10dnZiMBhIT08XN9eNjY0cPHiQzs5O8XVCra1wr/r6+rJ27Vqxa5FUKuWuu+76PFWcyzIjpRxSqZS8vDwSEhLIz8+npKSEzs5O+vv7SUlJwWAw4HA4CA0NJTMzk/T0dDHR5YucRmYSod3O//t//4+Kigqam5txOBzccccd3Hzzzdxwww0uL1ovKyujpKSEjz/+WBTGPbd7hcViEQ2KcLIxmUxYrVaUSiWbN29m0aJFJCYmkpycLNY0zrQaTUtLC6+++io7d+5EoVB8oXY1vb29DA0NodfrMZlMouBCdnb2jG84VCrVtO+qpaWF7u5u9u7dS3Z2tpgBV1VVhUajwWg0ikXrQmwxPj6e/Px8HnroIfLz86+Lfnvuxmq1UlhYSFxcHPn5+axbt26agezq6qKlpYXTp09TXV2NXq/H6XQSFhbGsmXLiImJIS4ujvXr1xMUFIRSqUShULhcgLy9vR2bzUZKSspF7/2pqSmOHj1KdHT0dRMiEcQ64uPjp33GZWVlVFVVceDAAY4cOYLVaiUiIoI1a9bMeAlMZGQk//zP/8yWLVv48MMP2bt3L01NTWLs3WAwTFOYEgQfioqKWLlyJffcc8+MrpEymYykpCQeeughbDbbtO4/cPb+vFwNvEQiQaVSXWAwr+U7n7HVVFB7yM3NRaVSMTo6ilarJTw8HIvFItbWxMTEEBERQUREhNtdHBaLhf7+fnbt2iXWvvj6+nL33XdTXFxMZmamWzJTU1NTGR4epqKigp6eHoaGhqbtsO12OwaDQVTtCQkJEWu1AgICyM3NZc6cOYSEhBAeHu6ytloGg4G2tjb6+/uBs5lllzPAgqKKoEwjuE0E//9MEh0dTXJyMnPnzqW3t1dM1RYSa4SksP7+foxGIzabDS8vL1QqFcHBwRQVFZGSkkJaWhq5ublXIh/3lULw5kxOTlJeXk5fXx8Oh0NcHAU1prGxMaampkhOTmbOnDksWLBAFG8XEkjcqTDU1dXF8PAw/f39zJ8/HzjrJQAYHh6mrq6OoaEhVq1aNStav+fT29tLW1sbjY2NpKSkIJVKsdvtjI+PU1ZWRnt7O62trYSFhZGdnc3ixYtd0mDYy8tL3MSsW7eO8PBwWltbOXPmDF1dXYyOjoo6peHh4cTExLB+/XoWLlxIWlqaS9SOZDLZrDVRuBQzetRQKBTExMTMatbp+VgsFsxmMyaTCZ1OR21tLX/5y1/o7OxEqVSSmprKM888Q2Ji4owEvb8IeXl5KBQKenp62LFjh5i0ci4KhYKsrCzi4+NJSEhg48aNBAcH4+/v7zbXnxAD8ff3x2g0igZGaH1jNptRKBTT2lfBWbeMj48PGRkZ5OXlcdNNN7mkxiw6OprMzEwKCgqw2WwYDAasVqvYt05QcnE4HKJRFDRUz/3ez41Pfh2RSCSsWbOGU6dO0dTUxIkTJ8QNrYCvry8BAQGkpaWxbt06Fi9eTEFBAT4+PrMWxxscHKShoYG6ujqUSiVOp5PR0VGxm0RjYyN2u52FCxdeF7WrfX19VFRUsGfPHtE4WiwWenp66OjowGQyIZVKKSoq4vbbb+fGG2902WZdmA8FBQXMnz+fwcFBDh48SGlpKW1tbXR2doq607m5uTz11FMu172+3piVrhzuZM+ePXzwwQd88MEHOBwOcRFdv349q1evZvPmzWRkZLj9xCAk2nxe6YAQ/xEaprp7ERIEuq1Wq9iH7ujRoxiNRvr6+vjwww9Zu3YtsbGx0wx2SEgI3/rWt8TAvmBAXYFgqOvr6zEYDExMTPCf//mftLa2otfrxXT4uLg4li9fzl133UVaWtpVtbA5h+s3q+PzueR8Fmo9zWazmDR3bosg4QQRGhoqdj2Y7eSW1tZWmpubOXjwIB9++CEBAQGkpKRw8uRJMXHkRz/6Efn5+aLG5mzidDr585//zHe+8x1x3iuVSubNm8d3vvMdsT1ednb2rLRRE2oHnU7ntF6PF+vn+hXjojfyV944trW1UV5eziOPPILVaiUgIIB58+bx8MMPs2DBAubNm3fdHeevFwTDI9Q5CXJ1drtdNJCRkZGoVKppO0pvb2+SkpLw8vJy2yI6OTkpqmDU19ej0+mw2WyoVCpMJhMqlUrsLD4DWalfOeMo4HA4mJiYEAutBRQKhVicfb2g1+vR6XSo1Wp6enqQy+X4+fkxPj4uZh9nZmYSFBQ0a+Ii59PR0UFVVZVofLy8vMRmAUL5wrn5Bx7cwtfTOOp0Orq7u3n88cex2+0EBweTn5/PnXfeSVxcnNtcqR6+UnxZV64v/Xz24MEFfD2NowcPLsBjHD14+Opw0fk8+7nNHjx48ODBw3WGxzh68ODBgwcP5+Exjh48ePDgwcN5eIyjBw8ePHjwcB4e4+jBgwcPHjych8c4evDgwYMHD+fhMY4ePHjw4MHDeXylNYHOZ3h4mNraWl566SV0Ot00BZCAgABiY2O56aabuOGGG2a9O4OgE1lXV8fRo0eBs+1dEhMTWbFihUdBw4OHLylOp5OBgQEmJycZGxujoqKCsrIyNBqNqEglNB3Iz8/H39+f6OhoCgoKRPk+D/9AkD3s7e3l8OHDDA0NiVrVcXFxzJ07lxtuuOGKRfGvyTjqdDp0Oh0mk0nsxjA6OkpkZKT4OzgrEB0REUF0dPSsChWfPn2aQ4cOUVpail6vn2Yc/f39iYqKQi6Xo9frmTt3Lunp6fj6+rp1vOdKs1VUVFBbW0tVVRUAsbGxzJs3j4yMDAIDA92qd2i1WjEYDDQ0NKDVaqcJpUulUry9vYmKiiIiIoKgoCCxI4Y7cDqdTExMMDk5iVarZXx8XNSEhbMdYyIjI0lOTvZIc10lQgPu1tZWsRH38PDwtOf4+PiQkpJCQkLCjPZxNJvNaLVaWlpaMBqNOBwO4uLixK4WJpMJLy8vZDIZUqmUyclJJiYmxH6dgq6qzWZDp9OhVCoJDg5myZIlMzbGz0P47IRuFyMjI7S1tTExMcHY2Bg1NTVUVFSg1WrFNUmpVBIYGMj4+DgqlYrU1FQiIyMJCAj4Wol/X47JyUl6enro6+ujoaGBiooKsfWWXC6ns7OTrq4uwsPDmTNnDgEBAV/4b1/T6trb20tDQwP9/f3U1dXR3NxMWVkZGzZsYHBwkNraWgC+8Y1vsGrVKm666SaxAaq7Fyin08nf//53du3ahV6vF8WT4ayepF6vp62tjba2NrZv38769ev5t3/7N+bOnes2I2S1WjGZTPT29rJ9+3Z+//vfo1arpz0nOTmZ4uJicnJy3NJeS2BycpKOjg6ee+45amtrpy2MPj4+BAUFsWnTJtauXUt+fj4pKSluEXN3Op1YrVZaW1upq6ujpqaGEydO0N7eztjYGBKJhOjoaNatW8eTTz7JwoULv5Ztqa4Vi8XC+Pg4r732mtiIe9++fUgkElGoOioqiu9+97vcf//9xMXFzdi1tVotJ0+e5H//93/p7u7GarVy7733IpVKMRqNDAwMiB1XVCoVp0+fpq6ujoGBAWQyGdnZ2SgUCnQ6HY2NjcyZM4clS5bw9ttvu2UdstlsaDQaysrKxFNic3MzRqNR3MDJZLJp64zQymrfvn04nU7S0tKIiYkhPT39io2jIHJ+rqD4+cxmg4OrQegY1NnZybvvvstnn33G6dOn8fHxwdfXl+DgYAIDA2lsbESv1+Pj48Ndd911RcbxmuTj3nrrLd5++23Kysqw2WzYbDaxjZGwW3I6nSiVSvz8/MS+YLm5uSxZsoTk5GS3uAiMRiO7d+/mf/7nf+ju7qawsBB/f3+kUikOh0N0t/b29gL/6HeWlJTE1q1bSU5Odqmb1Ww2MzIywgsvvMCRI0fo6enBZDJdcLoFCAoK4qabbuJnP/sZqampLhvTuVgsFt577z3+8pe/cOLECby9vacZGGHSWa1W/Pz8iIqKYtOmTTzwwAMkJia6tBv86Ogo5eXl/PjHP0av1xMYGEh8fDxpaWmEh4cjkUg4cuQIk5OT+Pj48Ne//pXw8PBr3X1f/6vHxbkq+bjJyUl2797N66+/zrFjx7Db7chkMqKjo1EqlRiNRsbHx9FoNGzYsIFNmzbx+OOPz9igm5qaePvtt3nppZfEXqHn9ji02WxIpVJxnXE4HFitVmw2G1NTU6KrUvgpLi5m06ZNPP30024xBAaDgaamJh5//HHa2towmUyEhYVNa8z7zDPPsGDBAhITE8XXaTQafvrTn1JVVYVSqeTWW2/lJz/5CaGhoV/ousKp6qWXXmJ0dJSRkRFaW1sv+tzg4GBWrlzJE088QVJSEoGBgdf8vl2FyWSioqKCt99+m8OHD6PValEoFNx1110UFhaSkJBAZGQkEomE9957jzfeeAOtVsuLL77IunXrLvYnL3oTXNORSHC1TU5OAmfdawqFApVKJS6eJpNJdItYLBYOHTqEWq3GZDIRGxvrllOkTCYjOTmZ++67D51OR0ZGBkqlUtz1TkxMUFhYSH9/P83NzdTV1aHT6ejs7KSiogJvb2+XGker1crk5CSHDx+mo6MDrVaLVColPDycqKgo4uLiGBsbo6OjA7PZfFGj6UoaGxs5c+YM7e3tLFq0iEWLFk3r2Wmz2TAajbS0tNDY2Mjw8DD79+8nIiKCpUuXsmzZMpeNzcfHhzlz5nD77bcjlUoJDQ0lNDSUyMhIsdtKUFAQlZWVlJWV8f7777N69Wqys7O/6m14Zozu7m6ampqoq6vDZDKRm5tLRkYGCxcuRKVSodPp6Orq4pVXXkGj0TA4ODij1/f19SU1NZXi4mJaW1sZHh4mNTWVwMDAaV1CIiMjp7l0JyYm2Lt3r9ilRS6Xs3LlSoqLi90at5fL5URFRZGamoq/vz8BAQEsXbp02jp5ww03EBMTQ0hICHB2w2yz2RgbG8NiseDr6yt27fiiVFdXc/ToUTQazbQNf1RUFDKZDKfTKYbCDAYDR44cQaVSsWbNGm666SaXfBZXi91uR6/X09DQQE1NDWfOnKGyshKZTEZBQQHz5s1j48aN4kHG19eXvr4+cdOWmpp6xaGea1odvL298fPzIygoCKfTiUwmQ6VSERMTg7e3Nw6Hg/HxcbRaLQaDAaPRSFVVFaOjo9hsNr7xjW9ccApxBXK5nMzMTFJSUpBIJPj6+k47sdpsNkwmE6Ojo+zbt4+pqSlaWloYHR3l1KlTpKamkp2d7bLxmc1mxsfHqaurQyqVEhgYiI+PD5mZmeTk5JCXlye6Ybq7u13aH/F8nE4nXV1djIyMIJVKWb9+Pbfffjvz5s0Tn2OxWNDpdFRUVPDRRx9RWlrKqVOnCA0NxcvLy6XG0dfXl3nz5vHYY4+JcZrzCQ8Px2q1cvDgQd577z3Cw8NJT0/3GMcvyMjICMPDw2g0GsLDw1m1ahXFxcUsX74cpVLJ6Ogop0+f5rXXXsNqtWI2m3E6nTN2jwYGBrJgwQIkEgkVFRU0NjZSVFREbGzstAUvMTGRrKwsfH19sVgsdHV10dHRQXt7O3a7nZCQEDZt2sSaNWvIy8ubkbF9Eby9vYmNjWXFihWYzWYiIyPZsmULfn5+F70H7XY7ExMT9PT0iN6swMBAYmNjr+iebW9vp7KykoiICEJCQsSDSFZWFnK5HIfDgVqtpqOjg+bmZnbs2MHY2Bhyufy6Mo42mw2tVktvby+fffYZn332GRqNBoD58+ezceNGVqxYQVpamvgap9NJW1sb7e3tDA8Pc/fdd4sbjy/KNa0Oubm5eHt7s3btWuAfiQ+rV6/G19cXu91OQ0MDTU1NNDQ08MEHH9DR0UFPTw8jIyP8y7/8CzKZzC1HeIVCcUlXmkwmw8/PDz8/Px555BGamprQ6XSMjIygVquZmppy6dg6OzspKytDKpWybt068vLyWLBgAWvWrCEgIAC73U5paakY61u8eLHb4o0SiYQNGzYwf/58HnvsMfLy8i7ojeft7U1oaCg33ngjRUVFNDY2sn79erq6uujs7HT5+ISd+aVISEggNzeXwsJC3n//ffr7+zGbzdNccx4uzbJlyxgdHUWtVnP//fezaNEi4uLiROM3NDTE4cOHsVqt5OXlsWXLlhndvAUEBDB//nxycnK49957RcN7sWsIvzt+/Dj79+/nzTffxN/fn8LCQp555hnWrFkzawktTz311OeOHc4u6p2dnfzhD3/g1VdfZWJigs2bN7N27VoeeuihK+pL+e1vf5tvfetbF1zr/H87nU6qqqo4efIkw8PDaLXaK39zLsJut9PU1MS2bdsoKSmhsrKSnJwcbr31Vh599FFxw3Cx97Rz505qa2uRy+Vs3Ljxc9eIi3FNxjE+Pp6goCBMJhNwNlanUCjw9fUVG90mJycTERFBdnY2aWlp/OxnP6OrqwuLxcJvf/tbbr31VoqKiq7Yqs80QtzkxIkTVFZWMjAwgJ+fHzfeeCPJyckuvXZwcDCZmZk8++yzrFixQvT5+/n5IZVKcTqd4knXZrPR19eHxWJx6ZjORchEDQ4O/tx0aIlEIrpY7XY7g4ODjIyMuG2cn4fD4cBkMhEfH094eLhbs2m/7CgUCm644QaSk5OJi4sjKChIvAf27t1LSUkJ27dvx263i3E/V/B5RgXOemAmJiZ48803OXr0KK2trURFRXH33XezfPlyFi1aNKvNmi83frVaTU1NDVu3bqWurg6Hw8HmzZv55je/ycKFC6/Y0yGRSL6QV66lpYXq6mpGR0fJzs52Wy7D5ejr66Ouro4//elP4oElLy+Pp59+mtzcXLG64HzGxsY4ffo0hw8fRqfTkZqaSlJSknvdqsJp61JIJBICAgIICAggNDQUhUIhPt9ut1NWVkZmZibz58+fVeNotVrp6uqiubmZvXv30tHRgcFgICAggJycnCvecVwpgYGBJCcnExISQkZGxrSAu5CVJcRphQ7n7sy4FJIdLnfScjqd9PX10dzcjMVicXtJx6UYHx9naGiI4eFhgoODPSfGK0QqlRITE0N0dDQTExMMDg5iNBoBKCkp4fjx47S0tBASEkJwcLBba4SF+dHd3c3Y2BhDQ0N8+umndHV1YbVaWbFiBWvXriUrK4vw8HC3jet8HA7HRTNFHQ7HtFKVkpISDh06hNPpFL1wCxcuJDExccZDKXa7ne7ubo4fP05FRQVOp5OCggIyMjJm9DpXi1qtpra2lpKSEnx8fIiOjqa4uJiVK1cSGxt70Y3O2NiY+DkODg4SGxtLfn4+QUFBV3TqhlkUAXA6nXR3d9Pd3c3AwAApKSmzNg6tVsv777/Pxx9/zKlTp4CzrpywsDCysrIIDg526RjCwsIICwu76GNCIPrAgQP09fUREBDALbfcMusn7Yths9nYtWsXb7/9Nkajkdtvv53CwsLZHhbHjh1j//79lJWVsWrVKqxWK+Pj40RGRs720L5U2Gw2KisrOXjwIO3t7QAcOXIEjUaDTCZj7ty5pKWlTcu4dMeYNBoNL7zwAo2NjfT19dHV1UVGRgZFRUX87Gc/IzIyclZPjA6HY1rZxrmcW7xeWVnJgQMH0Ov1ZGdns2zZMh544AECAwOveGH/IhiNRrZu3cqOHTvo6uoSS3HS09Nn/FpXw8DAAJWVlej1eoqLi9mwYQOPPPLI577myJEjHDhwgDfffJPg4GCKi4u5//77r+rz+9pmJIyPj6NWq+ns7OSdd96hoqKCrq4uAFQqFbm5uTzwwAOzcso4V/Ghrq6Ow4cPs337dvR6PQkJCW4fz6Ww2+0YDAba2tqoqKjg0KFD1NbWolarKSws5JZbbmHhwoWzNr6pqSmam5v53e9+x5kzZ7BarRw7doyGhgb+/Oc/87Of/YxFixa5fPPzZeTUqVP09/ej1WopKSnBaDRisVg4deoUBoNBXOiNRiM2mw2n00l7eztvvvkm3d3dPPPMMygUCpeUalmtVhoaGti3bx8NDQ10dXVRX19PSEgIOTk5/OpXvyI5OZmoqCjCw8NnNfGqvb2dqqoqXn75ZYaHh7HZbNMeF06+RqMRk8mE0WikuLiYu+66i82bNxMcHOwSL1FHRwcnT57k1VdfRSKRsGzZMn75y18SHx8/49e6WhYvXkxYWBhFRUUUFBR8rrt3amqK0tJSXnrpJRoaGpBKpfz85z8nPz+ftLS0qzp1f22No1qt5uTJkxw6dIiKigoGBwdF1ZeUlBRyc3NZvHixS3Zsn0dHRwcDAwP09vbS1NRER0eHqEojiBWUlpYil8vF+M9sYLPZmJiYYPv27TQ1NYlF+BKJhLS0NO644w6ysrIueSJ2NZ2dnbS1tfHpp58yNDREbGwsa9aswcfHh4aGBtRqNZWVlaSnp3uM4zmYzWbKy8s5cOAAPT09GAwG6urqxAzU3t5ewsLCiIyMFEMkQl1hd3c3DQ0N2Gw2UlNTWbly5Yy6Mu12O21tbTQ2NnLixAmqqqro6elhdHQUrVaLRCJhaGiIxsZG1Go1QUFBREZGEhoaio+PD3K5nMTERLG8zFXfu9VqRa/X8+mnn9LWe3Tn1QAAIABJREFU1kZzczOnT59mcnJSLMg/F6GkTPh/k8mEj48PERERLhkfQENDAzt27MBsNrNx40ZWrVpFZmamS2uSr5TAwEBSU1NRKpVifsvF0Gg09PT0sHv3bjQaDVFRUSxYsID8/Hzi4+Ov2mswq27V2VRi6O/vp6ysjFdfffWCx+bNm0dOTg6pqaluje05nU4qKys5duwYJ06coLa2VoztCExMTPDOO++IN8psGsfR0VF++9vf0tzcLE7ugoICVq1axaOPPnrFWoYzSU1NDXv37uWNN95g7ty5rFmzhm9961uEhYXxpz/9id27d1NRUXFdpaxfD0xNTbF9+3Y+/vhjenp6kEqlYjagl5cXAQEBZGRkkJSUJJ4yBGPw1ltv0d/fL6o6JScnz6hxtFgsYvF3WVkZZrMZh8MhqssYjUba29vZtm0bcDYnIjc3l6ysLDH+HRYWxsjICOPj46Snp+Pt7X2BOs21MjU19f/ZO/PouKsrz39qkVQqlfbSWtr3XZa1eZVlY2wsYwgQIE2AkIFsE8KZYdIbzTCk0xyaJgk9YUjnZCMxNAkY4uAF77tky5atXda+WmtJpVJJqkW1zh/O79c2NmDjqpJJ9DlH54BVqt+rX/3eu+/ed+/3MjAwwEsvvcTIyAjz8/PXGEVB6k44zxfOHi0Wi3h+arVaPRYObm1tZceOHURERHDfffdx1113iWMXEod8fHzEMS7GPFYoFCgUims22EKkwul04nA46O/v5/z58+zevZvk5GSWLVvGww8/TEZGxi3dP68bxysljK5Urbid2Ldvn6jT9+Mf/9grZRNOp5Px8XH27NnDgQMHmJqaum6hv9ls5ty5cwBs3bqVtLS0RdntCZMnMTGRmZkZxsfHCQ4O5qGHHuKxxx5b1DMegOrqas6fP88TTzzB1772NZKTk8VEp/Xr1+Pr68vevXuvew7014yPjw95eXm0tLRgt9uRSCTcddddREZGEhERwde//nV8fX1FqTH4r9BgYWEhO3bs4MSJExw5coTp6Wm3jm1ubo6pqSnGxsYwGo2EhIQQFxfH6tWrxdd8fCGXSqUMDg4yNDSEXC6nublZ1CxWKpU8/vjjVFRUsGHDBreNs7a2lvfee4/u7u5rni+5XI5CoSAtLY309HRycnJ4/PHH6enp4dChQ/zoRz9iaGiIuro6MjIy2LRpk9vGdSUqlQq1Ws3Y2Bhf+9rXRCOYn58v5kDcddddpKeno9Fobqvz+erqaoaHh9HpdDQ0NHDx4kXm5uZ48sknefDBB0lKShIN+63gFeM4Pj5Od3c377zzDlqtVgwjSCQS0SXW6XQEBQV5LYypVCqJjIwkPT0d4CoxZYvFwsjICLW1tVRXV5OXl+dWrcjrIZwzGgwGDAbDpyrgOJ1Oenp6OHXqFBqNhi9/+cvXCBt4Gh8fHyIiInj22Wc5efIku3btoru7m1OnTqFQKNi2bRuRkZGLZiQffPBB1q5dS0xMDGlpaVepi8jlcnx8fG67TdntgEKhoLKykvj4eGZnZ5FIJMTHx+Pv749CoSAwMPC6XoSPjw+VlZVcunSJiYkJmpub6e3tJTk5meTkZLeMLTAwkDvuuIOEhAQmJyfF8dzo3JRIJDgcDoqLixkdHaW5ufmGpdhudpxxcXFkZ2eLWrDx8fFUVlaiVqsJDg4mPT2dkJAQQkNDiY6OxtfXF71ez+rVq6mrq2NmZoaxsTGPRdjuuOMOwsPDGR0dZXx8nJmZGebm5jAajUxNTdHW1kZ/fz/BwcFERkayceNG7rjjDq8dkzidTkZGRujp6RFL6wQlttHRUUwmExaLhcnJSex2O9HR0Wzbtg2NRuO2OlavGMfR0VEaGxvZvXu32KnjygLiixcvkpubS3p6uteMY3BwMKmpqaxatQq47JHp9XrOnTuH0WgU5eNOnjyJQqEgNDTUo2UJgoydyWS6quOFn58f/v7+qNVqUbt2YmKCqakpLl68yL59+9i0aRN+fn5eNURCScmmTZtQqVTodDpRiN7pdJKamopKpVo041heXg5cW/AMiLq1S1yLXC4nIyPjKrWRG0EikZCWlkZubi4dHR20tLQwOjrK2NiY24yjQqEgNzeX7OxsHA6H6L3ezJoh6D0bjUYiIyNRKBQ3JUZ9I4SFhZGVlcXk5CRhYWFYrVays7O59957iY2NJTg4mISEhKuezaioKFJTU1m+fDkNDQ3Mzs4yPj7u1nFdSXZ2NpmZmUxOTjI4OIhWq0Wv19PV1UVPTw8mk4mJiQk6OjoAxDPazMxMIiIiRPlNdyNEIfr6+mhra+P8+fMcPnyYnp4e9Hq9WB4oiLoIHVl8fX3F80m3DuZTftzCr3/9a9d9993nkkqlLqlU6pJIJOKPVCp1qdVq1wsvvODq6+tz1yVvGqPR6GpqanJ96UtfcoWGhorj8/f3d3372992nTx50qPXN5lMrt/85jeu5cuXu7gsEO0CXCkpKa5HH33UderUKdeuXbtcr7zyiis4ONgll8tdgMvX19dVX1/vMhgMHh3fjYx/y5YtrpiYGFdgYKDrnnvucbW1tS3qmD6Jn//8567Nmze7Vq9e7aqvr/88b/FZ8+Z2/fE4jY2Nrtdff90ll8td3/nOd1w7d+70xmVvSxwOh8tms7lsNpvL4XB85utHRkZc77//viskJMSVnp7u+upXv3pDf+cJnE6na3h42PV//s//cS1btswFuCIjI13333+/68yZMy6r1eqR65rNZtfAwIBr7dq1roiIiGtshZ+fn+u+++5z/eM//qPrV7/6leuZZ55xFRYWupKSklwXLlxwzc3NfZ7LXne+eMVzrKiowN/fn6amJkZHR6/yjOCyevybb77JnXfe6bZd5s2iUChISUnhhRde4LXXXqOuro7Ozk4x1Cn0CPMUvr6+rFy5ko8++kgsVt+6dSsFBQUUFBSQmJiIw+GgsLCQtLQ0XnvtNdra2jAajR4d143i5+fHP//zP/POO+9w7NgxamtrOXjwIGazmeLi4sUenojVamVkZISBgQHKyspuq+y8vzROnz4t1uX+NXJlW7zPwmq10tfXJ2aQJiUlUVZWtmgJbRKJhMjISL7xjW9w3333MTQ0xE9+8hPq6+v5xje+wSOPPMKGDRvECI27ECIBSUlJoh5sUFAQSUlJREREEBQUJCZYSaVSzp49K2ZSuxuvGMfo6Gjy8/P58pe/jFarxWaz4XA4aGxsZHx8HIPBwPDwMBMTExgMhkVplyKVSgkICCAzM5OVK1cyPz8vZmE6HA6PJ25IpVKio6NZvXo1YWFhhIeHs2HDBpKSkoiLixMXcZVKxYoVK1Cr1fj5+d02xlEqlZKdnU1CQgIqlQq9Xk9PTw/Jycm3jXF0Op20trYyNDTEwsICRUVFYueOJa7F9ec2ZHBZGvJmMredTic6nc7tSTl/qfT19dHa2kpLSwt+fn4kJyeLYuuLhY+PDxqNhujoaOLj4+no6KChoYH29nZOnjwpGv/S0lK3XVMqlaJUKqmoqMBut4t9OmNjY8WjraioKFwuF9PT0wwPDwOIhtOd1QVeMY4qlYq8vDxeeeUV8d9sNht/93d/x9GjR2lpaQEuPyD9/f0sW7bMG8O6BolEglKpZNOmTczPz/Phhx96LWlDIpEQEhLCY489hs1mIyAg4LpJNnK5nNjYWPz9/W+7rhIBAQH4+/vj4+ODzWZjaGiI0dHRxR6WiN1uZ+fOnbS3t+Pr60tVVZVHEjL+UrDZbGL3A6VSeUMbCSG9Xvj7L0o2sNPp/EztU09e+8SJExw6dIjW1lbi4+MpLCy8KgvXG1y51l15H2QyGWFhYfzt3/4tvb297Nq1ix/+8IcMDw/T09PDsmXL3JYrIpfLCQkJ+VQlHJfLxeTkJF1dXbS2thIaGkpubi4xMTFuFZVftNVVJpNx55130t/fLxrHH//4x9TX1/OjH/2I6OjoRevYrlarSUlJobCwkLa2Nq9eOyws7FOV++12u9g+yNPdQm4VpVJ52+iYGgwGBgYG+MMf/oBCoRCFixe75OR2pre3l1dffVXszPLQQw995t/09PRw5swZAJYvX75oG92bQavVUlNTQ1ZWFpGRkV7bMAlHNvX19Xz00UcMDQ1RUlLCI488wqpVq7y6+TUajbS3twOXvbDExMTrvi45OZlvfvObRERE8MEHH7Bnzx62bNnCqlWrPK5BLdDW1sahQ4d48803cTqd3HPPPTzwwAMolUq3bm4WxTg6HA5MJhONjY1MTEyIH8hkMmEymTzSyNdms4lhXKvVKqZQx8XFIZfLxWJgQOwscmX3AW/xabtXs9nM6Ogob7/9Nn19fbetcZTJZCgUCgoKCm4LnUaXy8XY2BinTp3CYrGwdu1atmzZgr+/v1fLX75IaLVaenp6aGpq+syOEK4/lyHt37+fo0ePcvHiRQDKysrcGnLzBELR/c6dO1Gr1WzYsIEtW7bc8Mbc6XTS2dnJ4OAg7e3tYolTbGwsRUVFYujx42fbFouF5uZmWlpa+Oijj2hpaSE4OJiSkhJWrVrldRm3yclJfvvb35KRkUFRUdEnGkfh+GnFihUYjUb8/f353e9+h6+vL6WlpR6phxT6xc7MzNDf389HH31Eb28vMpmMb3/726xdu5bExES3r9WLYhxNJpOoBn9l2C00NNQjWoJOp5OZmRmqq6tpaWnBZDIRHx9PZmYmBQUF15RqWK3WawyPN4ykIKIstACDy3F/Pz8/FhYWmJqaoqOjg9///vcMDQ1ht9vFhqneWuTtdjtzc3NiSrxarUYul+N0OjEYDMzNzWGz2YiNjaWgoOC2aH9jNBrp7+/n1KlThISEsGLFCjZv3rzkNX4KIyMjdHd3MzAwwMaNGz81D8BkMjE2NsYf//hHGhoaGBoaIjw8nOXLl5Obm+vFUd88k5OTdHZ2cujQIRQKBWFhYdx55503tAa5XC5MJhPnz5/nzJkzHD16FH9/fzIyMigsLCQ0NFRsAC9oIgs6qoODg9TU1HDq1Cn+9Kc/ERQURHJyMmVlZeTm5no9UWxmZobDhw8zPT2NQqEgOzubkJAQZDLZdde+tLQ0nE4nSqWS7373uyxbtkyU63MHNpsNq9WK2WwWu62Mjo5y9uxZ9u3bh4+PD7m5uTz22GNERkZ6JEK1KMaxtraWl156ibNnz17Vl/B//I//wcaNG4mNjXXr9SwWC3v37uWtt96iqanpqsJamUxGVFQURUVFYjHx7OwsfX191NbWirJZnq6/dDgcDA0N8fzzz3P8+HHx3zMyMli+fDnnzp0ThaCFZqTx8fGsWbOGuLg4r7SGcjgcXLp0iV/+8pfU1dXhcDj49a9/TVxcHAaDgZdffplDhw4xNTXFSy+9RGlp6aK2CRI4duwYu3btYteuXbz66qusWbPG7bVtf2nU19dTW1vL7OwsZWVln7rJEZSkjhw5gtVqJSIighdffJHi4uJFSa67Gd58803279/PxMTETQt9mM1mTp48yU9+8hOam5vFzaLT6USv13PixAkUCgX5+fn8y7/8i9jIuKamhueffx6dTidm7j/00ENs2rSJBx54YFHOPUNDQ6mqquKtt97i7NmzVFdX88ILLxATE/OJa0tGRgZqtZq9e/fy4Ycf0tHRwZo1a9wynu7ubi5cuEBNTQ379u1jenpadFjKy8u5++67+eY3v0l4eLjH7pdXjOPs7CxarZYzZ86wb98+enp66O7uFr0PPz8/MjIyyM/P91gpx5X1K8L/w39phJ49e5bm5mYAcccil8vZvHkzW7ZsYeXKlR4Zl4DFYuGDDz6gvb39qgy/5uZmBgcHmZmZwWKxiKr+kZGRlJSU8NRTTxEQEODxCWU2mxkfH+eFF15gdnaWhIQEHnnkEUJDQzl+/Di/+tWvOHfunGiwN27cuOiC3larldHRUd58801GR0dZv349Gzdu9Lja0V8Cwlz5pCMOi8VCT08Pe/fu5ezZs5w7dw6FQsHatWtZvXo1W7du9biaiiCM7u/vz9jYGDabDblczvLlyxkaGsJkMn3imacQ6RgcHGRsbAyAqqqqm0ousVgsnDt3jpmZGWJiYli9ejWbNm0iKipK1DwWmgb88pe/pKGhgeHhYXE+x8bGkpSURFVVFWvXrr1GGMCbREVF8a1vfYvVq1czMDBAT08P3/zmN9FoNCQnJ7Nx40aWLVt23U2lRCJhZmZGTN66ERwOB7/73e+uipIJCWBdXV2Mj4+j1+vF7kl2u53AwECKi4v57ne/S35+PsHBwR69X24zjrOzs9d0p3f9WfVlYGBAVJsRPAu4fFOFNOFVq1aRmJjoER1TqVQq1soIOqB2u12c+Far9ZqO9T4+PgQGBrJ+/XoKCgo8qpAPlyfr1NTUNQo5CwsL133oEhMTyc3NpaCgwCuqQlarFYPBwOnTp4mLiyMxMZG4uDguXrzIqVOnOH78OP7+/qSnp7Nq1So0Gs2inudZrVa0Wi1Hjx6lu7ub8PBwNm7cSEJCwm2TJPRFQavVMjk5KS74c3NzaLVaTp8+zcGDB+nt7WVmZoZVq1ZRUVFBRUWFx87MhPPNjo4OWltbmZmZQalUcunSJdE4Cm3UjEYj8/PzBAcHX9WsWwhtdnR00N/fj8ViITo6mhUrVpCamnrDz63dbmdkZISFhQXxb+x2OyaTSdx8a7VaRkZGqKuro7GxEbPZjEwmIz8/n+zsbLKzs9m8eTPJyckolUqP3LMbQaFQkJmZSWRkJD09Pfj5+dHa2kpPTw+jo6NiIqBarSYgIEA86tFqtYyPj+Pv739TPWadTifHjh0TJQrh8pwVjOP8/DwulwuZTEZ4eDhqtZrY2FgqKyspLy/3SsKm24xjZ2fnNQbGZrOJLnpnZ+dVRhEuhzQrKyu5//77ufPOOz0m8C2Xy8nMzOS+++4jKSmJDz74gJmZGdELE2oZr+y1plQqSUpK4utf/7pXPCC5XC5Krgn353plJMLv1qxZw+rVq72mdShMer1ej0ajEVsbvf3223R1dWEwGHj44YepqqqipKTE64ZRuFeCbu/U1BTnz5/n+9//PomJiWzYsIHvfe97Xm9B9kVGeNZqamqw2+3i5repqYmmpiY++OADZmdncblcKJVK/tf/+l9XHU94AqvVysTEBD/4wQ9obGxEp9Mhl8uZm5sTJeUSEhKYnp7GarUSGxvLypUrSUpKEqNSMzMzjIyM8N5776HT6QgJCaGiooLNmzff1JmZ0+lkbm4Ol8vF6OgoO3bsYMeOHZ/4eolEQk5ODuvWrePhhx8WjdHtRGhoKKWlpRQXF1NeXs6OHTs4dOgQL7/8MnA5mz4zM5Po6GjGxsZEz/tLX/oS69atu+HrOJ1ODh48eI3NEJBIJPj7+xMSEsKdd97Jli1bWLZs2U3LGt4Kks+o47vhIr/HH3+cw4cPX/3HLpfYO81ut+NwOAgKChIFg//bf/tvlJWVkZWVRXR0tEcXVJvNxsLCAlarFaPRiNPpFENHIyMjNDQ00NzczOHDh8nMzKSoqIiqqipWrFjhlQXV5XKJGVljY2OcOXOGxsZGmpubaWhoAKCkpITS0lIeffRRUlJSCAoK8tpu0+l0Mj09zdNPP01dXR1TU1P4+fkxNzdHZmYmGzZs4NlnnxVVLbxhHO12O5OTk1y4cIGuri6x40FDQwNNTU2Mj4/j6+vLz3/+cwoKCm5qZ/sZLF5l9q1xw/N59+7dHDx4kJ/97GeoVCpRy9LlcmG1WrHZbBiNRhwOB8uWLeORRx7hySefJDAw0KM7eqfTyeTkJN/5zneora1lYmICqVR6VUsouVyOw+G4LAH252dC0N8U3sNut2M0GgkPD2fFihW88MIL5Obm3lSSlt1uZ2xsjB07dnDy5En27t17TWuqsrIyUbi9oqKClJQUkpKSiI2NxdfX97bOlrZarczPzzMzM0NjYyNdXV2Mjo4yPDyMTCYTP2tWVhb33XcfWVlZNyyqYbPZePzxx0Wt7Y+Tl5dHcXExpaWlBAYGolQq8fPz81R5y3Xns9uulJCQQGZmJgaDgfb2dvE8ES6r1EdGRpKRkSHKAkVERLB27VpR+cDTD4mPj49o5K5cJF0uF6GhoQQGBpKcnEx6eroY6s3KyvJarZEgqKtSqQgJCcHX15fk5GRKSkoYGhoCEHe/ubm5qFQqr9aBCsoVy5cvR6vVikLtq1atory8nA0bNhAVFeVVz6ytrY3Ozk5qa2sxGAzidzw6OkpAQAD5+fmUlpaSlZW16OefXzTS0tIwGAx0d3dTX18vtouCy+dTUVFRaDQaNBqN6A152jDC5XkSEBDA3XffTVpaGsPDw/T39wOXzwCFc0Rh42uz2cROGFf2PhWEqmNjY8V16WbnulwuJyYmhoqKCmJiYsjKyrom2pOcnExYWBg+Pj5kZmYSFhZGcHDwF0K20NfXl7CwMIKCgpDL5cTFxaHX66/y9mQyGRqNhpSUlJtSm5LJZNx///1XnTkKSCQSNBoNiYmJJCYmLlq9u9s8xwMHDtDV1cXw8DDvv/++2PXA5XIRExNDSkoKW7dupbCwEI1G4/aM1CU8j81mo7q6mgMHDtDc3ExnZyf/+I//SHl5Ofn5+V4fz+9//3vOnTtHY2MjarX6qkmUlpZGVlYW27ZtIzAw0N2br794z9HpdDI2NsahQ4f49a9/zcjICEajEZfLRV5eHllZWZSXl7NixYqrElC8hVDaNDg4KGZ363Q6hoeHOXnypOjVuFwuiouLxYVWICAggKqqKiIjI1EqlUvh9r9urjuf3WYcrwxTfjy0AP8lwrtYXaWXcA9Op1P8EcJWi/WdCqEzQfrrSgQxBQ/tOr+oD/BNayE6HA7xPgsI9/Z2mM8fX2+ul2ErjPfKcQrjX1qLlsDTxnGJJf6K+KKuqEvzeYklruW68/n2PQ1eYoklllhiiUViyTguscQSSyyxxMdYMo5LLLHEEkss8TGWjOMSSyyxxBJLfIwl47jEEkssscQSH2PJOC6xxBJLLLHEx1gyjkssscQSSyzxMdyijWa327FYLFgsFubm5sT+h1fKMcnlcgIDA70mx7aEd7BYLKL+okqlEjsgLLHEEkt8kbllS+VwOMSWLOfOnePtt99Go9EQHx9PUlKS+LrIyEgeffRRr+tvLuFZmpqaePfdd3njjTd44IEHeOqpp9iwYcNiD2uJJZZY4pa4ZeOo0+l46qmnmJycFBtemkwmhoaGuHDhgvg6Pz8/Dh48yGOPPUZhYSE5OTleF98dHx+nqamJ119/HZPJREREBKmpqTz00EPExsYil8vp7u4mPT2dwMBArxpxl8vF/Pw8k5OTjI6O0tDQwPHjx5mdnRVbaV3ZyqqkpISSkhI2b97s8aafH8fhcGA2mxkbG+NnP/sZ586dw263U1dXx7Zt27w2DrjsuU5MTHD8+HFMJhMOh4O+vj4GBgaw2Wzk5+dTUFBAUlISaWlpHu0c/teEzWZjfHyc8fFxLl26xMWLF+ns7GRmZgaj0QjAN7/5TUpKSkhLS/PYOCwWCyMjIxw8eJDOzk56e3sJCwsjOjqa8PBwQkJCKCwsJC4uDo1G47FxfBo2mw2dTsfhw4fp6Oigs7MTnU53zevkcjlKpZJ169axbt06li9fvgij9S5C268DBw4wOzuLzWYTfzc0NMTAwADFxcViZxWBwMBANBoNq1atwuVyif15AwIC3CYZeUvGcW5ujkuXLlFbW8vCwoKocRgaGopcLsdmszExMQFc1la9dOkS0dHRWCwWQkNDSUxM9GrLFqGpcXV1NbOzs4SHh9Pf309oaCgxMTH4+vpy8eJFhoaGiImJISEhgbi4OI+PcW5uDp1OR0tLC8PDw4yMjNDU1MTFixcxm82iVqREIsHhcDA3N4fBYGB2dpagoCDuuOOOm2q183lxOBwMDg4yPDyMVqtleHiYc+fOMTw8DMD8/DwTExMMDw/j7++PUqnE19fXY6r6RqORS5cucfToUaqrqzGbzeIYh4aGsNlsaLVaxsbGSEhIIDU1lZUrV6JWq5dC/J8Dh8PB1NQUer2eqakp2tvbmZqaYmpqirGxMSYmJujt7WV0dBS5XM79999/1WLnbgwGA2NjY5w+fZpDhw7R3d1Nf38/ISEhaDQawsPDUSgUjI2NkZycTE5ODpmZmfj7+3vtu5+dnWViYoK6ujrOnz9Pb28vPT09mEwmsQWTr68vDodDPKKwWq1ERESIm3RPIGxwW1paRMNjtVqZmppCoVCgVqtRKpWEhIR41FFYWFhAp9Nx6tQpLBbLVTq5w8PDDA0NXbdzR2BgILGxseK4zWYzdrudlJQU1Go1arUaPz+/WxrbLT0hg4OD1NfXi56NTCZDKpWyevVqFAoFRqORffv2iSLVVquVd999l5GREcLDw9FoNF5Z1AX8/PxQKBTieahOp2N6epru7m7Ri52YmCA+Pp7CwkK2bdvGI488glKp9Ji34XQ66evro6amhtdff53R0VHm5+eRyWSsXLlSbBcjYLFYuHjxIu3t7QwPD9PR0UFZWRnh4eEeGZ+Ay+XCbDbzxz/+kQ8//JDW1tarerFJJBKCg4Pp6enh8OHDxMXFkZqaKrbo8cR4hoeHOXz4MM888wwymeyq70iYZPX19Zw/fx643ILnxRdfZPXq1eTk5Lizv+NfPA6HA5PJxOnTpzl37hwtLS2cPHkSpVJJdHQ0mZmZ3HnnnchkMgwGw1UGyhO4XC66u7s5ffo0P/vZzxgcHMRqtSKTyZiYmMBoNOLj44NOp2PPnj3ExsayfPlyXnzxRRISErzWRaS/v5/Tp0/zk5/8hKSkJPz8/EhLSyM6OpqoqChCQ0MJDg7GZDLR0dHBgQMHOHLkCGlpaSxbtoy8vDyPjMtsNjM8PMw//dM/ERsbi7+/P1NTUxw7doy4uDgqKytJTEykvLyc7OxsIiIiPDKO2dlZBgcHOXjwIKGhoaI9EOZyRET8m/3SAAAgAElEQVQEbW1tTE5OihEJAalUSmNjoxixtFgs3HPPPZSVlbF+/XpiYmJuaWN+S8LjVqsVg8HA0aNH0el0BAYGsnLlSoKDg5FKpTidTgwGA8PDw3R1dfH222/T1NSEzWYjKiqKo0ePEhsbe8sW/kYRDNGvfvUrampqmJiYYGZmBpPJJO6MDAYDcrkcuVyOSqVi27ZtbNu2jXXr1rm9J6DNZuPv//7vxWa909PTYoPPv/mbvyEuLg4/P7+rPFehwe/zzz9PY2Mjer2e5557jo0bN1JcXOzW8QmYzWZqamr46KOPeOutt8Td7cefHR8fH/z8/MTNR3h4OJWVlTz33HPExsa6zQNfWFigrq6OV155hba2NgICAigqKiI3N5eMjAw6Ojro7u4WQ1darZaJiQkGBwcJCgoiMzOT5cuX89JLL31eD/KLGpe9KeFxwSAKi+bOnTtpamoiJSWFlJQUSktLyc/PF/sVbt++nQsXLjA/P88Pf/hD8vLy3N6r1WKxMD09zd69e3nvvfdobW1Fp9ORkZFBZWUld999NwaDgZiYGJRKJYODg/zbv/0b3d3dWK1WMjIy+J//83/y2GOPuW1Mn4bJZMJkMjE9PU1wcLC4iZNKpaIzIZFI0Gq17N+/nx/84Ac4nU6+973v8a1vfYvIyEiPjEun09He3s7WrVvFrjZOp5OFhQWxMbTQwzEvL48f//jHqNVqt3uQTqcTi8VCT08PYWFh19gCp9OJVqu9xjj29fVRW1uL0Wiko6ODwcFBABQKBeHh4eTl5fHmm2/e6ObM/c2OfXx8CAkJobS0FKPRiJ+fH4mJicjlciQSidhIODg4mLCwMEwmkxiWm5ycpKGhAZlMRkJCwq0M44aRSqVERESwZcsWsrKyxJCQYBAtFgsXLlygv78fo9GITqfjzJkzxMbGEhMTQ3l5udvGYjQaxUSm7u5uDAYDmZmZrF27lvLycrGr9sd3Pi6Xi8DAQAoKCpienmZsbIy2tjYKCgrcNraPY7PZGBoaoq6ujpmZmeu2JBNed2UYzWg0Ultby29+8xu+853viOH2W8XpdDIzM4NWq0WpVPLUU0+RnJxMbGwskZGRxMXFkZ+fj8lkAmBmZoaenh5qa2s5e/Ysvb29uFwuDh06xPr16z22K/4i09vbS39/PxcuXMBgMDA3N0dERAT33nsv6enpJCYmkpKSwsLCAt3d3TQ3N9Pf309ubi5paWlkZ2cTFBTkVsNoMpmoq6vj9OnTnDp1ivb2dhwOB6tXr6aqqorCwkLy8/Mxm80EBQXh4+NDREQEVVVV1NTUcOLECQYGBhgcHGR8fJzo6Gi3je2TECJVKpUKPz+/ayJQFouF9vZ2ampqqK+vJyAggHXr1lFYWOixkKowrvDwcOLj4xkeHsZqtRITE8PGjRtRKpWYzWb+9Kc/MT4+jo+PD0NDQ6hUKrcbR6lUir+/PykpKfj7+1/X0wsICCAyMvKqtSU+Pp74+HhaW1uZnJykt7cXuHy0Exwc7JZN2S2tVBKJBB8fH1JSUj7x93K5nIiICIKDg1GpVLz55psMDw9jt9tpbGwkLi7Oa8YRIDg4WDzwFrqbC8ZxZmYGHx8f0UW32+10dHTQ0tJCamoqZWVlbguvzs7O0tTUREdHh3h2uGbNGtavX09+fv4nhn0kEglKpZLk5GQ6Ozux2+2MjY0xNzfnlnFdDyHp4eLFi6JhFMp1hHMTmUyGzWbD6XSKpT0mk4n29na0Wi333HMPCoXCrRM+ICCAuLg4nnrqqatC3x9/nhYWFmhtbSUgIIDz58+j0+mw2+0cPXqUZcuWLRnHP2O327HZbMzNzVFfX8+ZM2fYuXMncrmcoqIiNmzYQEVFBdHR0eICevz4cU6dOsXevXtJT0/nnnvuYevWrQQEBLh9fDqdjhMnTvDb3/6WgYEB/Pz8SE1NZevWrTzxxBOEhYVdsyAGBwezbds2ZDIZ58+fx2g0MjExwcjIiFeMo9Dz8uNGRThmmpyc5OjRo7z//vvMzc2RmJjIgw8+SF5enkdLooRweFlZGVKplPn5eYqLi3n66adRq9XodDpOnz7NpUuXmJqaYmRkxGOJVRKJBJVK9Ym/V6lUqFQqMfHGarUSEBBAVFQUJpNJ9MiFjYhGo2H58uW3bMj/qjMSAgMDCQwMFMODOp2OvLw8jhw5clXD1KmpKQYGBtx67f7+fv7f//t/zM/Pk52dTUVFBS+99BJKpfKG4uQnT56krq4OmUzG+vXrP3GD4g46OzsZGBhAr9cDl89uIyIiWLNmDRs2bCAtLY3k5GQ6Ojro6+ujq6uLHTt2oNPpWFhYQKvV8qc//Ym77rqLFStW3PJ4/P392bp1qzhZP2sh9vPzQ6PRUF5ejlwux+Vy4efnR15enkcW8S8q3d3d1NbW8txzz4lJDRUVFTz55JPiOZlEIqGtrY2Wlhbee+89hoaGKCws5Ne//jUlJSX4+vp6JIHN6XSye/duqqurxbm4Zs0aKioq+MpXvkJISMgnXreoqIiFhQU6Ojr44IMPMJlM15xfeZv5+XmOHTvG8ePH+Y//+A+ysrLYtGkTzzzzDHFxcR5PGJJIJISGhvLLX/6S8+fPi5Gr2NhY0akJCgpCoVDg5+dHWFjYoiawOZ1O5ufn6ezs5NChQ9TV1XHixAnm5uaQSqWEhYXx1a9+lRUrVpCRkUF+fv7ieo43g9Ch+8pzKiHmvthIJBJMJhMjIyPs3r2byclJMckIELO23El0dDRf+tKX0Gg0ZGdns2rVqhsyjA6HQ0wkcjgcqNVqKisrSU5Oduv4riQ+Pp6YmBjUajV5eXmUl5eTmZlJbm4ukZGRqFQqAgIC8Pf3JyMjgxUrVlBQUMBbb71FR0cHk5OTmEwmrFar28YkkUiIi4u7odeOj49z/vx5du7cic1mIyYmhry8PNasWeORZKEvKjMzMxgMBh577DEKCgqIjY0lKCiI5ORk5ubmxGSc1tZW9Ho9kZGR3H///aSnp5ORkXHdsKG7cLlcdHV1MTk5iUwmIyIigk2bNlFZWYlarf7UeVNbW8vhw4eprq7Gz89PzFz1NkJS29TUFL/61a9oampicnKShx9+WDzqiYqK8qoRkslkZGZmYrPZUKlUyOVyent7OXnyJH19fSiVSrKzs8nNzfXKRtJms4nP4aVLl+jv78dgMGC1WtHr9dTV1aHVapmfn8fPz4/4+HiKioooLCxk48aNhIeHo1Kp3GJXvPItCFb/4sWLWCwWMcwQExPzqe60p1lYWMBoNDI7O8vw8DCtra20tLRgMplEIy6RSAgMDEStVrv12mFhYWLykjBZP8swulwu5ubmOHfuHFqtFplMRmpqKqmpqR7NvgsPDyczM5M1a9ZQUlLC6tWrSU9PJzY29qrXCRm/drudqKgoWlpaxNpNk8nk9rT+T3t2zGYzRqORsbExuru7xVR6IRRXVFREcnLykprPFQgp/Lm5ueTn5xMREYFMJsNsNtPe3s7x48epq6tjbm4OlUpFfn4+lZWVREVFeSXr/MpkFoVCgUajITIykunpaTHPQSKRYDab8fX1RSKRoNfrOXnyJGfPnmVkZIT8/HwSExPdPp8/DSGxSafTMT4+Tnd3NwcPHsRsNhMeHs7mzZtZv349arV6UZyFK9cOg8FAV1cXx44dw2g0kpaWRm5urseOHpxOJzabjcnJSebm5pibm2N8fFw8R+zu7mZ6ehqpVMrCwoJYqhMTE0NYWBhpaWmUl5eLtfPuxCvG0WQy0dXVxfPPPy/WQIWEhLBt27ZFO+9xOp2Mjo7S2trK8ePHOXr0KB0dHSwsLFz1Ol9fXxITE8nPz3frrjgkJIQVK1bcVJhxYWGBvr4+nnnmGcbGxigoKOBrX/uaGHP3FIGBgXzlK1/hgQcewN/f/zPvg1wuJzY2lsrKSsxmMxcuXECn03k1lDU0NERDQwM//elP6evrEwuMc3JyqKqqYsuWLUte48coKiqiqKjomn8fHBxk7969vPHGG6Snp/OVr3yFdevWUVZW5rWxSaVS7rjjDsbGxujq6sJoNDI1NUVnZyetra2Ehobi4+ODVCqlp6cHjUaDRCJh3759HD9+HIPBgFKp5L//9/9OaWmp18YNl9e/1tZWdu/ezenTpzl58iQKhYKHHnqIqqoqHnroIa+O59O4cOECe/bs4e233yYxMZENGzZw9913e+x6FosFrVbLO++8w9mzZxkaGmJ8fBydTndV4l9CQgIJCQk8+OCDbNq0idjYWEJDQ9FoNB7bUHjUODocDtra2ti5cyfV1dV0d3djt9vJyspi27Zt19TweRqbzcbIyAh79uyhvr6egYEBent7MZlMYnnClfj4+PDTn/5UjGMvNseOHePgwYOMjo6SnZ3N+vXrqaqq8kopjFCecSMbhImJCf71X/+V2tpahoeHkUqlREdHExQU5PFxChw8eJA9e/bQ0tKC1WoVz5CFLFetVuu1sXxRmZubo6uri5/97Ge4XC6efvpp7r//fjQajdvLmj4LiURCRUUFLS0t1NTUMDY2xssvv4xCocBisVxV52qz2cR1ZW5uTiy4Dw8P96gX9HGcTic9PT2cO3eOV199VfRwCwsL+d//+3+Tk5NzTfRlsbBYLAwMDPDKK6/Q3t5OREQEr732GgUFBR5TFpqamuJ3v/udeHZtNpuxWq3Y7XYcDgcpKSmkpqZSW1tLYWEh2dnZhIaGYjabcblcxMTEeNTTdptlWlhYYH5+ntHRUaanp5mdnWVmZobOzk5Onz4temUBAQHEx8ezYsUKrwoAALS2tlJfX8/+/fvp7e1Fp9MxNTX1ia+XSqVkZWURExPjtVrM62G327lw4QInTpygrq4Of39/KioqWLFiBaGhoV6TQ7vedYRQR1NTE7Ozs7hcLmZmZjhx4gTDw8OYzWYCAgIICwvzaggzOTmZ4uJiTCaTqCgkPJeNjY04HA6mp6dZuXIlUVFRXpcyvJ1xOp10dXWJ5S8Oh4O0tDRWrVolKsy4XC5GR0dFuTghW1rI8hZC3iEhIWRlZd1QxOGzEDxDIWtxYmLiqhyGK99fIpEgk8mQyWTI5XKkUilms5mPPvqIS5cuiUkbnoq4WK1WGhoaqK6uprGxkenpafLz80lISCAtLY3S0lLUavVtEdbX6/UMDw9z9OhRurq6CAgIYMOGDRQVFREZGemxuSEoLg0NDWEymQgKCiIwMJCoqCg0Gg02mw2DwSBG+YREut7eXuLj4+nv76eyshKFQiE+F0I43R24zThOT08zMDDAyZMnuXjxIoODgwwMDDA1NSXuBlwuFyqViri4OAoLC70eXz927Bj79u3jyJEjN/w3KpXK60ZcQFgE5ubmePfddzl06BA9PT0kJSWxbds2iouLF10CbW5ujurqan70ox8xMDAgemhCQpOQch0dHe3VzNA777yTvLw8YmNjGRkZoa+vj+bmZi5dukRNTQ21tbXs37+fl19+mZUrV942O/jFxOVy4XA4mJ2d5fjx42Jt4JNPPsnatWtZu3YtVquVhYUF5ubmaGpqEuXihoaGkMvlTE9PYzab0Wg0OJ1O0tLSCA4OFtWwbmXOm0wmLBbLZyZ2+fr6impYSqUS+K/uMa+++iorV65kw4YNJCQkeEQaTbiHf/zjH9m1axdjY2NkZmbyxBNPUFRURHp6uluvd6sIMpDbt2/HYDBQUlLCt7/9beLj4z16XCORSPD39yc0NJTQ0FBSU1PFTW1FRQVHjhxh+/btyGQyLl68SGtrq/j8hISEkJSUREJCgihC4XA4CAsLQ6FQuGVdvCWFHLg8oYxGI3/3d3/HkSNHGBoaErNSHQ6HuLO7MsElPT2dDRs28NxzzxEREeG1Xfuzzz7L3r176e7uvqHXy+VynnjiCR5++GHuuOMOD4/uWiYnJ6mvr+fAgQP88pe/xGKxoFKp2LhxI48++ii5ubmkpKQsasZvXV0dO3bs4Mc//vE1ijkA5eXlfP/732fz5s0olUqvjlXYXAiZ0larlffff18M88/Pz5OcnExVVRX//u//fjNv/RepkDM5OUlnZyfPPPMMwcHBZGVl8dWvfpXCwkKxmcAbb7xBR0cH4+PjGI1GUbBfJpNxzz33iIZGKpXS1NQkepfPPvssJSUlZGVl3dIH+L//9//y7//+76IiypXPnJ+fHwEBAVRVVXHHHXdQVFQklvv09PRw4MAB3njjDWZmZgDIycnh5Zdfpry83K0eXGNjI0ePHuX5559HrVaLsnUZGRlu8aDdzW9+8xsOHjzIkSNH+M53vkNlZSWVlZUen6sulwubzXZVYwVBOUgmk2G32zGZTBw9evQa3dXe3l5qamoYHBwU1XwsFgt33303a9as4d57772ZobhfIUfgSjHsjye0iFf/s2IOIHZREJQR0tLSuOuuu9wxlE9FWCSvR1BQEEqlEpVKhVarFYVsT506RUJCAlFRUR7TOfwktm/fzvnz52lpaREfDrPZTH19PbOzs+Tk5LBu3Tq2bNmyaGFfQbrpykVK+O+EhASys7NZvnw5/v7+XjfigkiFgJ+fHxUVFfj6+pKUlMT27duZnJykubmZPXv2sHHjxr/q8GptbS27d+/G6XSybt06MjMzMZlMHDt2jN7eXlpbW7FaraSnp1NYWEhKSgoJCQliCUdycvJVnkZJSQkTExO0t7ezf/9+UXwhNzf3cxuIsrIynnzyST766CPMZrOo6buwsEBSUhKFhYWUl5eTkJCAWq0WoxVJSUlUVVURGxtLU1MTra2tnDt3jtdff53m5ma+/vWvo1Kp3GK4HA6HqBal1+tpamri5ZdfFkueVCoVSUlJREREEBMTQ2lpqUc9tE8bZ1dXF7W1tbS1taHRaFi7di05OTlemasSiQRfX99PjMz5+PgQGBhIaWmpuMkVyMvLo7i4mK6uLs6ePUtbWxszMzMcPnyYgYEBRkdHefzxx28pWuUW4ygUYUZHR4vWXejKIOBwOJifn2dubg6z2Ux/fz9/+tOfxNh/Tk6O6EV6amcVEhJCdHQ0ZrP5msU6IiKCkJAQwsLC6OvrY2ZmhtnZWXp7e2lrayMnJ8frxrGjo4Ouri50Op3oIQqdOWpraxkcHMRisZCRkYFGo1mU7EuDwYDL5RKTHGw2mxhWUiqVotDC7bBblkgkpKWl4efnR0hIyFVyYkeOHKG8vBwfH59FWahuB7q7uzlx4gQ+Pj6i/FpbWxvj4+OMjo6i1WpZtmyZ2P6puLhY7GbzSej1euLi4jh27BhKpZL4+HhycnI+9/MgeF9CY3WpVEp4eDgWi4WsrCxWrlxJSkrKNe8fHBxMcHAwmZmZpKamEhERIYqnz87OUl5eTkFBgVvWH39/f8LDw0lNTRXPYE+fPo3NZsPX15eAgABSU1PRaDQkJyejUqmIj48nICDAq8ckdrud9vZ2Ojo60Gq1rF69mszMTK8oB90oUqn0E+uZhfINiUSCxWLBz8+Pvr4+xsbGmJmZYf369eJ9/TzcclhVoLu7m4sXL/LRRx8hk8lYtmwZq1atEn8/MzNDTU0N7777LmNjY1itVmZnZ0UlhoqKCv7hH/6B/Px8j53xnT9/nqGhIbRaLUVFRVf1/lKpVKJB1+l0jI2N0drayrPPPktOTg4bN27kBz/4gVcX+TNnztDb28vIyAjbtm0T09UnJyf527/9Wy5cuMDU1BRr167lG9/4Bg899JDXF/bGxkYuXrxIY2MjcDkDbXR0lIMHDwKXywO+973v8fDDD98WyQcCs7OzfPDBB7z66qv09fURGBjIzp07yc7OvhGx4sW39J+PT53PL7/8Mq+99hqTk5NX/fvq1at5+OGHRe/qpi/qcvHSSy9hMBgIDAzkn/7pnxZ9AzI/P8/vf/973njjDQYHB4mPj+f9998nKSnpltcfIVzY2trK4OCg2L1GaEfX29tLe3s7er0eu91OdHQ0r732GmVlZV7tOTk/P88LL7zA3r17sdvt/P3f/z0PPvig1zORbxUhGbS9vZ3nnnuOhoYGrFYrzzzzDFu3bqWysvKz3sJzYVW4rKKiVqvFesCAgICrdDTtdjtJSUls3LiR6elpRkZG2L59Oz09PWi1Wo4fP87KlSuRSCQea/KZnZ1NSkoKNpvtmqaYglqPVCoVW8loNBoUCgW9vb3IZDKeeOIJYmJi3LLICx1NZDIZ/v7+133P/Px80tPTsVqtomi3cG//4R/+gaNHj/Lzn/+cxsZGdu7cycLCAo8//rhXw5cZGRnExcWxZs0a4LIn2dHRwdmzZzEajcjl8tvynEVAEMcvKysjOTn5r7r2cc2aNUilUkwmE+Hh4ajValJSUlCpVGJ/v8+Dy+Wis7MTwKNi2jeDUqnk3nvvpbW1lZMnT9LT08P+/ftZu3btdWs9bwYhnJ+ZmUlSUpIYTbNarVitViwWC3q9XhQbr66u5oc//CGFhYV86Utf4q677vLKMYlcLmfZsmXU1tbS09PD+++/T0ZGBtnZ2URFRXn8+u7C19eX4OBgCgsLefTRR4mJiWHHjh3s37+fyMjIz12+4zbjqFAoUCgUn7rrUKlUREdHMz8/T1JSElNTU5w4cYILFy4wMTFBTU0Nvr6+xMfHEx4e7vZFPiAg4IZcbB8fn6uk7gICAsR2Le4ak9FopKenh7GxMVJSUsjOzr5mQgiCux9HLpeTm5srtnrZu3cvnZ2dqFQqvvrVr3rVOCqVyqsWTaHhcGRkJJcuXbqu6PJi43Q6MZvNdHV1YbFYCAwMJDs7W5TP+mslKSkJuVyO3W4nJCSE0NDQG5bo+ySMRiNDQ0P09/cTExPjtT6Kn4VUKiUyMpLS0lJmZmbo6OigtraW2NjYWzaOgLiJ/aT1xmq14uPjg1qtRi6X09raSnd3N0ePHhXLPDydJS+Xy0VpOKPRKCr39PX1odFoyMjIICwsDJVKteie/qchaMEGBgZSUlLC7Owsp06dYnR0lPHxcWZnZxfXOF6Jy+USk1+EDCT4rw8REhJCSEgI3/ve9wgPD8flcrFv3z52796NVqslNzeXVatWLVqSiSBn1NTUhNVqpbS0lC1bthAXF+c2D0iv13P69Gk++OAD7r33XqKjo28q1h8aGsqKFSvQaDS0tbWJGoQOh+OGi/XdifCdC7u4xMREsdDekxPrSs1e4Vn7rM8uiKHv3bsXvV5PVlaWKJr914zQBsidTExMsGvXLtrb24mMjCQpKem2iiJs2rQJuVzO7t27OXDgABkZGXz5y1/2+HV9fX0pLS2lsLCQtWvX8h//8R/U19ezY8cOHnjgAbHdlieRy+WUlpYyPDyMn58fb731Fq+//jpKpZLIyEiefvppysrKSE1NvSbSdruyfPlyHA4Hp06d4siRI+j1emZmZsT14WaQvfjii5/2+0/95SfR09PDjh07ePnll9HpdMzNzeFyua7pvC40FA4NDWXXrl04nU5CQ0PJzs4mKyvL64uVy+XCYrGwZ88etm/fzr/8y79gMBjQ6/VMTk7y2GOPubVlVX9/Pzt37sTf35/o6GiSkpJuyusT+mmq1WoMBgMTExM8/fTTXjWOLpcLvV5PT08P58+f5w9/+AO/+93vqKmpEdvJJCYmsnz5crd/n2NjYzQ0NPCLX/yCn//854yMjBAZGUlYWNgnfn6LxcL777/PL37xC86cOUNpaSlVVVU88cQTN5Op+gO3fQjv8qK3L9jR0cFPf/pTFAoFVVVVfPnLX76tMoL9/f3R6/UcOnQIm81GaWnpjZxRuQ2ZTEZwcDCRkZFYrVYOHDiAXq8X9Yy9QUpKCsuWLSMzM1PUm+7p6eHkyZMcPnyYQ4cOMTExQWJioldVrj4vQui6pqaG6OhoEhMTyc7O/rQ18brz2SOeY01NDadPn6axsVHMWrxez0aTySSeTwklFkJ9pKeZmppCr9ej1+sxmUzMzs4yPz+PwWDg2LFjdHR0iPVQQu2NOwkJCaG4uBipVEpjYyM+Pj5ibdnNHIg7nU7a2tqYmJjA4XAwMTHhFsWXXbt2iU2fs7OzUSgU170HQqcEQSx4dHSUiYkJTCYTGo2GvLw8ysrKPBJaPXz4MGfOnBFbdzkcDoKDg687CQThZ0GCr7m5mZCQENatW7eoUYq/ZDo7O2lsbKS/v597772XnJwctwhBWCwWDhw4QGFhIdHR0bf0rA8PD9PX14dOp3PLhtJqtYp1ejeKkHfg5+eHw+FgbGyM2dnZWx7LjeLn50dkZCSrVq0iJCREDIN3dXUxPDxMd3c3CoWCjRs3EhERcdtHWIKCgigoKMDX15fBwUFqa2vFcrebcT7cbhxdLhdtbW10dnZy6dIlLl26xIoVK8jNzWV6evqq142OjnL69GmOHz8u/vuVYVh3Y7PZsFqtYhPeoaEhhoaGmJmZYXx8XDSYbW1tzM/PA5cfHLVa7daQKlz+AgsLC4mKihJVRnJycvD39xfTvT+LhYUFJicnOX36NENDQ8DlcK2gEvF5ELznDz/8kOrqaqampti8efMnKolUV1czMTGBXq+/RrlEqDsrLS31yIQ6deoU+/fvZ3h4mOLiYlGm7uNYrVa0Wi3Nzc384Q9/oL29nenpaYqKili7di2FhYVuH9tfM06nk9nZWbETislkYs2aNWRkZLhlkylEd5xOJ9nZ2ajVahQKxafWzF2PhYUF2traaG5uRq/Xk5iYeMvJdnq9Hl9fX5RK5U1tuIRjCeAq8RRvoVAoyMzMJDMzk9nZWUZHRzlx4gQffvghDQ0NtLS0iP1Z3TmXnU6n+CMkRN7K+i9IzMXGxiKVShkZGaGurg6z2XzTOSNuN45Ctung4CAXLlwA4J133uH48eNXdbaw2Wz88Y9/xGQyiQoJUqlUPLPyhIHs7OykoaGB3//+95w5cwaj0XiNl/rxfpMrVqzgK1/5Clu3bnWrcRQKYP/1X/+V7du38+677/Laa6/R2dlJZWUlX/va1z7zPUPq4UgAACAASURBVFpaWnj99deprq7GYrGQkJBAVlbWLXlBJpOJ/fv309LSwtDQEAsLC7z77ruf+PrrTWLhsxUUFJCTk+Mxr8xsNmOxWHC5XOTk5BAfH39VQo2QUt/Y2Mju3bt5/fXXmZ2dJTQ0lMLCQt5++20iIiKWvEY3o9freeWVV9ixYwcOh4P777+fLVu23EiJzA3hcDjQarV8//vfx+l0UlhYyObNm8WuIjfyfS4sLFBXV8ePfvQj6urqkEqlfPvb32b9+vWfe1wul4v//M//JCQkhIyMDFavXn3Da4bVasVmsyGTybjjjjtITU393OO4VYKCgggKCiIzM5PQ0FDUajU7d+4Uo2zuzDgWjq2mp6cJDQ0lODj4ltqJWSwWhoeHOX78OBaLBaPRyMDAAEajEaVSeVMJdx4Jq1ZUVOBwOHA4HGK7mNnZWUZGRsSHxeVyiYbR19eX9PR01q1bR0lJicfCXIIw+oULFzAajVc1NL6S0NBQ8vPz2bp1KytXriQhIcEjh+NSqZTi4mKmp6dxOp3s2bOHI0eO0NfXh1arZcuWLURFRYkPo9lsxmw2YzAY2L59Ow0NDbS1teFyuaisrGTTpk34+PjckhEXBB1kMtlVoe4ruVIK8OMEBgYSGRnJnXfeyYMPPujRbiYlJSXodDr279/PuXPnkMvlmEwmCgsLGRkZYXR0lI6ODi5cuMDg4CALCwsUFBSwcuVKysvLvxAhIm8jRA4uXbqE0+kkLi6OgICAz3ymXC4Xzc3N1NfX09DQwP79+wkKCmLZsmV897vfdeuCqlKpeOaZZ/jtb39LQ0MDtbW19Pb2kp6eTlFRERkZGeTm5pKYmEhgYCB2ux2bzSbqq/b19dHR0cF7771HW1sbfn5+5OXlUVpaesvZufHx8bS1tXHu3Dmx36pQn3w9jEYj58+f55133qGtrY2YmBiqqqoWvQuQsHYLcys9PZ24uDi310D6+Phgt9v5zW9+w8jICAEBAZSXl1NRUUFUVJQYBROOvYRwsyBQDog63ufPn2diYoLR0VEuXryIyWSitLSUzZs3Ex4eftNz3SPGMTY2lmXLlmE0Gv8/e+8d3dZ55vl/QIIgSIAV7L33JjarUV2yZJVYo8iO0+MkjpOZOPHM7kk2k03iTDaebOpm0nySKBPbGzfZ66pudbGIFCl2sVeQAEgCIECCAIjy+0O/eyNKsmNZAGlP8DknJ4nA8hIX9z7v+5TvF7fbzcjICDMzMxgMBhYWFvDz8yMwMFCUU1KpVGzcuJGtW7eKbtjeQKPRMDIycsuQs4BUKiUiIkJ8gO7cuZP8/HyvtvdHR0dTUlLC/Pw8bW1tGI1GUQhYLpeTkJAg7qQMBoPodnL06FFGR0dxu92UlZV5TA9RKpUSGxtLZmYms7OzmM1mpqamWFxcvEXHMjo6mqCgIORyuZiOUqlUJCYmsn379vc6UP++KS4uZmZmhpaWFjQaDVevXsXlcjE1NcXY2BhqtZqenh4mJycJDAykpKSE9evXi2oovhPj7XG73fT39zMzM8Pw8DCpqaliSurme0EYizEajdTW1tLa2kp/fz8REREUFRWxevVqsf7jKWQyGZWVlQwMDCCTyWhvb2dsbAyr1crMzAxDQ0PodDpRCcdms4mB0WAwMDAwQE9PD5cvXyY4OJi0tDS2bt1Kenr6XY2aSCQS0tLSmJycZHR0lHPnzjExMUFsbCwxMTEoFArR+s1ms7GwsMDU1BQnT56kra0Nm81GeXk52dnZKzqIb7FY0Ol04kYdrh94YmJiPL6ZDAgIEFPiBoMBrVYrjhMlJiYSFxeHUqkUS14zMzPAdbN4oY+lr6+Pnp4eGhoamJqaEm3pMjMzqaqqYv369e9r1tpjCjm3/Wa3G51Ox+nTp2lsbOTcuXP09fURGBgo7kLy8vIoLS3ls5/9rEftRm7Ht7/9bd566y1aW1tveU0ikRAaGsqmTZv4yle+QmFh4bI6NczPz/Pb3/6W9vZ2MXjX19cTGBhIfHw8breb8fFx8cMhkUjE9M2//du/edwb7uTJk3R1ddHV1cVrr73G7OzskppiTEwMe/fuJTMzU7ThgevBXkiPLAft7e08+eSTHDlyRLRNgr+ebv39/amsrGTNmjXs3buXmpoaT2x2PjizCHfGe7qfHQ4HP/jBDzh37hxDQ0Ps3LmTsLAwZDKZ2K0otMYLlmWNjY1cu3aNyMhI8TMpPOS9qYxkNpvp7u7mpz/9KZ2dnQwPD7OwsIBSqSQ0NJSEhASsVisWi4XZ2VlmZmbEtctkMmpqatiyZQuPP/64x54/grrW5z73Ofz9/YmKimLt2rVifTQ8PJyJiQkGBwfp6+sTlZmqq6s5ePCgqP+7Uly7do2TJ0/yne98h7S0NKqrq/nRj35ESEiIV8Y5XC6XaHPX0dEhxgqhi19QLTMajaLFoEqlIjk5WexdufHAI5VKkcvl/OAHP2D16tXvpRHsthfdq8EREMWyhZ3S4uKiOO8o1BhlMtmy6G/+x3/8B0ePHuXYsWNIJBKKiopEibvCwkKys7MpKioiIiKCwMDAZZ3rcbvdYgAS6qDHjx+nvr6ec+fOMTIywuLiInK5nIqKCg4cOEBOTg7JycmkpaV5fL2C8ajdbmd+fn6JKAJcDzo37oSFtNGNSkPLgcViQa1W89Zbb4k6kXV1daSlpZGfn8/BgwcpLy8nKiqKkJAQTz2o/0sHR7iepejt7eWFF15gdnYWh8OB1Wrl7NmzS3oEpFIpcXFx5Ofns2XLFnJyckhJSSEuLk48bXrzvna73djtdoxGIzMzM6jVai5dukRbWxuDg4P09PQsmbv29/fnnnvu4Z577mHdunXk5+cTExPzjl3O7wfhmXflyhVaW1vp6+vj6tWr4j3s7+/P4uIiQUFBREdHs337dvbt20dqairh4eErIrPodDpFB4yTJ0/y8ssvo1Kp+OhHP8qOHTtYvXq1V+9pIQNhs9nEe1q4pg0NDeJmJjQ0lImJCQYGBsRmL7lcTmRkJFu2bCE1NZXk5GTy8/PJzs4mODj4vWx6ViY4fpAQTJc7OzuB6/UB4cSTnJwspj9W0gLqRq5du0ZfXx+dnZ3MzMzgcrkIDAwkPT2d6upqYmNjCQsL+0Bpli43LpcLm81GV1cXk5OTTE5O0tvbS3R0NAkJCaJQwp22cf8N/ssHR7ju0drY2IjRaBRdJrq6upY0sQUEBBAZGUlaWhrFxcXExsYSHh6+IgPjVqsVk8lEb28vo6OjaDQaxsfHgb/Wx6VSKZmZmWRlZZGdne01yzyXy4Ver2dkZITJyUn6+/vRaDRLyhPBwcGEh4dTWVlJaWmp1xoR38tahfTu6dOnGRgYYGxsjAceeIAtW7aIXfXLuZ75+XmxxtjX14e/vz8BAQEoFAqMRqP4ntpsNoKCgggJCaGgoICoqCgiIyNJSEi4E5cVX3D04cND/F0ERx9/HywuLnLt2jW++93v0tzcjFKpJD8/nyeeeIKkpKQPxeD/XeILjj58eAhfcPTxXwph7EnoUBc0kT9IUn9exBccffjwEB/WJ4bvfvbh41Zuez9/MIprPnz48OHDxwcIX3D04cOHDx8+bsIXHH348OHDh4+b8AVHHz58+PDh4yZ8wdGHDx8+fPi4CV9w9OHDhw8fPm7Ce4raPu6asbExBgYG6OjoYGxsjPz8fPLy8qiurv7AqPh8kBkbG+PnP/85cF0oXaFQsG/fPlEu7O9ZWei94Ha7cTgcPPXUU7jdbmJiYigsLCQuLo7Q0FCfo8mHDJfLxeLiIj09Pej1etHhYmZmBofDQXh4OG1tbVgsFvz9/SkvLycwMJDg4GAyMzMJCwtDLpeLYuErhV6vZ2pqivHxcbRaLXNzc8zPz2M2m/nkJz9JWlqaR56PXguOgtivy+XC4XDgcDiw2Wzi6xKJBLlcjlQqRSqVEhISglQq9frQqTDsKkg5CTqvTqdTHICF6zJTMpmMmJiYZZfCEvQiW1tbqa2tFVX7N2/ezMaNG0lISCAiIkL8oPq4PVqtVgyOgo5lZGQkeXl5JCYmolKpRHNp3/t4K0JwfPnll7FYLKSmpmIymcjOzhYdExQKhW+j9iFhcXGR6elp0Rxdq9UCMD4+jtVqJT4+nuPHjzM7O0tAQAB79uxBqVQSFhZGdXU18fHxhISEEBwcTHR0NAqFguDg4GW5/jabTdTn7u3tZWBggPb2dgYGBpiZmcFkMmE2m9myZQspKSkeWZPXRAAuXrzIm2++yfz8POPj44yPj3PlypUlGocbNmwgLi6O1NRUPvvZz5KYmOj13bzFYmFwcJB9+/YxPDyMv78/GRkZ6HQ6jEajuL64uDjKy8t56qmnlt33b25ujo6ODr7whS8wMDCAzWYTnQRCQkJYvXo1Dz/8MGVlZeTm5i7buj5sNDU1UVVVtUQIXSKRUFhYSE5ODvHx8WzYsIGcnByKioru5Ef/XYgAuFwurFYrH/vYx2hpaWF8fByJREJYWBhZWVl8+ctf5iMf+YhXbcl8eI7h4WFeeeUV/tf/+l8YjcZbXn8nn1a32y0eEJRKJfHx8VRWVrJnzx527NhxVzZf75X6+npaWlo4deoUFy5cEPV+BRQKBevWrePf//3fKS0tvdPgeNv72WsnR7vdztzcHBEREczPz+N0Otm4cSOlpaWEh4cjk8loa2tjaGiIlpYWamtr2blzJ5WVlWzZssVby8JkMtHQ0MDCwgJutxun04larRbtmIQPiMFgoLGxkSeffJIDBw7clUP4nSAY9D777LNMTk4C182XH3roIdErr6mpCbfbzebNm/niF7+ISqXy6olbsPuZnp6mrq5OFFV+++23b3Fd2LNnj3idV5r4+Hi+/e1v8+abb6JWqzGbzQQGBqLRaDAYDLjdbpqamoiPjyc7O5tvfvObfw86ku8ZPz8/5HI5TzzxBO3t7Vy5coWLFy+iVqvp6+vjJz/5CSEhIVRUVJCRkbGia3W5XJjNZvR6PaOjo5hMJiwWCwsLC6Lfp16vJyQkhD179rB9+3aSk5O9up6ZmRkGBgbo7+/n9OnTYrZKeF2QaIuLiyMtLY2YmBgSEhIoLS1FpVKhVCo9uqbAwEASEhLw9/cXN9sCgsNKaWkp0dHRqFQqVq1ahUajEf0pe3t7mZubY3x8HKPRSHh4OAkJCaxbt87jzx+n00lvby8tLS00NDTQ0dGBTqcTn3sKhQK3283zzz9Pfn4+VVVVPPzww2RmZnrsJOu14Cikr6KiooiNjWV+fh64blAbEhKCy+VifHycoaEh1Go1g4ODZGZmkpaW5q0l4XQ6mZ2dpbOzE7vdjkQiQSKRiPUo4U2dm5vDbrczPT3NhQsXqKqq8tqabsZsNqPRaOju7iY8PJyUlBTS09PZsWMHsbGxJCYm0tnZSX9/P3K5nMzMTLZt20ZISIjHU4Nzc3MMDw+jVquZmppicnKS+vp63G43er2ec+fO3XJTyOVy/Pz8RBf2lXBnEAgLC2PHjh04HA56enro7+8nMjJSNE2dmJjAaDQyNjbG5OQkn/vc5wgICPDVIm/Az89P3NBGRkYSEhJCa2ur+NCvra1FoVCsSHAUSjczMzOMjY0xMzPD1NQUWq1W3OQuLi6i0+nEgG6z2UhLS6O8vNxrwVHoFZiYmKC/v5++vj7Onj0rrksqlYrBKSAgQLzPY2JiiIuLY2ZmhqqqqjvNZvxNgoODSU9Pp7i4GK1Wi91uJygoSKy/BwQEUF5eTkxMDCqVitLSUjQaDRqNhrGxMUJDQ+nt7eXatWvMzc2J2TZPIqTyBV/Huro6+vr6cDgcREREkJSURElJCQ6HA7VaTUpKCtXV1WzdupVVq1Z59BnoteBYVlZGWVnZbV+bm5tDq9WSlJREf38/UqkUi8VCUFCQVx9MFotFfMAvLCwA1y13ioqKCAkJEX2/Ojo6REfp9vZ2dDqd19Z0M0Je3eFwsGHDBqqqqti8eTO5ubns2rWLqakpXnnlFX72s59x8uRJmpqaePnll8nJyfFoesvtdjM0NMSvfvUr6uvrmZycFI2WBW63Qztx4gR9fX1UVFSI7+tKoVQqqampoaamhra2Nt566y2ys7NpbGzk8uXLTExMMDc3x+LiIk6nk46ODgICAry6Qfsw4ufnR3p6Ounp6ezZs4eGhgbOnz/PD3/4Q1555RUkEgm7du1aVpFql8uFRqNhcHCQs2fP8txzz6HVarFarahUKoqKikhOTiYkJISdO3cyPT3NmTNnOH36NEajEb1e77W1HT16lF/+8pdMTExgsVjErJRQFomIiGBxcZGAgADcbjdqtRq1Wi0G9DfeeIP/8T/+h8eDo1A7fOyxxxgcHESn04kbBeFEGRUVtcQMvKCgALj+PHjrrbc4duwY165d8+i6bmRxcZHZ2Vl+8YtfcPnyZYaHh1mzZg0HDhygsrKSoqIiOjs7OXPmDGfPnmXLli187GMfY+PGjR5fy7J3q168eJFTp07x9NNPYzQakclkREVF8eijj/Lggw+SmZnptd9dV1fH22+/TUtLC3a7nerqavbt28cnPvEJ5HK5eMp54oknuHjxosd3Re+F/Px8MjMz2b17t2gELZzG/Pz8iIyMZOPGjfzxj39keHgYg8GAwWDAarV6dB1//OMfReNTs9m8xMOvuLiYuLg4sQ47Pz+PwWCgo6ODxcVFLBYLGo2GnJwcj67pbsjPzyctLY2AgAB0Oh2XL18WX1tcXGRmZoazZ88SEhLiC45/g7KyMqRSKYcOHWJ8fBy9Xn9Lms5bOBwOZmdnOXToEK+//jrDw8MEBARQXV1NXl4excXFVFVVifezw+Hg+eef58qVK3R3d/Ptb3+bzZs3U15e7rU1zs/Po9PpxPsmICCA0NBQHnzwQSorK1m1ahUul4ugoCBcLhfXrl3j9OnTXL16ldraWnGz5mmcTidWq5WSkhLxIFJYWEhycjIqlUo0Kr8Zs9nMiRMn+MMf/iB64QqnXk91rS4uLnL+/Hmampo4evQog4ODpKWlsWvXLv7bf/tvhISEYLfb6ezs5M9//jN+fn48+uij7Nu3j+joaI+s4WaWLTjOz8/T0tLCa6+9Rn9/P1FRUVRUVBAXF0diYiLr1q0jKSnJqydHnU7HxMQENpuNvLw8Vq9ezebNm0lISBA7ZZ1OJ06nU+xkTUtLIyIiwmtrupmAgADR1PN22O12BgYGxGDocrlwOp38jcaqOyYwMJCgoCCCg4NZt24dkZGRYg0kMzOTyMhIMYWh0+m4du0a3d3dOBwOsZbr6TXdDcL7Cog1lxvXJ3RP+7pWb4/T6cRmszE6OsrQ0BCtra0YjUYyMjJISUlZlsA4OztLd3c3ra2tnDlzhqCgIFavXs2qVavIyckhLi6OpKQkkpOTsdlszMzMcOHCBa5du4ZcLhd7BzIyMggMDPTaOpOSkqioqODEiRPAXw25Ozs7MZvN9Pf3ExMTQ3h4OH5+fmLqdWpqiuDgYHbu3El2drZH12S32xkbG+Ps2bMMDw+j1WqZmZmho6ODvLw8MjMzKSkpISwsjMDAQKRSKVNTU2L6/MyZM+IICEBMTAypqamkp6ff9bWfn5/nlVdeoa6ujvHxcdxuNx/5yEdIT08nOzubuLg49Ho9Q0NDvPbaayQmJpKSkkJpaSlxcXFeu5ZeDY5utxur1YrNZmN8fJy33nqLt956i9DQUGpqati8eTNpaWkkJCQQGRnpzaUAYDQaMZlMKBQK1qxZI6YthTSC0+nEaDQyMzPD3NwcUqmU8vJy4uLivL6294LT6cRkMlFbW4vZbPbq70pISCAnJwe1Ws0nP/lJMjMzxfdBmHcSdpkDAwMolUqeeeYZcVxHqOd+UBECo9vtxs/Pj8DAQBITEwkLC1vhlX1wEObi5ufnsVgsmEwm6urqOHfuHK2trWg0GjZv3kxOTs6yjGCNjo5y/vx5jh07hlqtZt++fdTU1LBv374lX2u329HpdPT09PDiiy/icDgoKysTP8feroNnZGSwceNG3n77bRwOB06nk7m5Oc6fPy92fhYWFqJSqQgMDGRiYoLh4WFcLhfR0dE8+OCDFBcXe3RNc3NzdHd38/vf/57W1lZsNpt4zYqLiykrK8PtdpOWlkZoaChBQUF0dnby9ttvc/nyZbq6usR5SJlMRl5enhhU75b5+Xleeukl+vv7CQwMpKqqii9+8YtERUUhk8mw2+309/fT2NjIiRMn+Ld/+zfKyspISUm569/9bngtOLrdbiwWC3/605947bXXaGtrY35+ngcffJBt27axd+9egoODl/UhGhQURHp6Op///Of5xje+QWxs7JI0gk6n4xe/+IXYKhwfH893v/vdD0yabWhoiMbGRv785z97PeWbk5NDRkYGjzzyCKGhobd0pd6ITqejsbERh8OBRCLB39+fwMDAD+z8m0QiEf8e4cQYHx/PRz/6UeLj41d6eR8YpqamOHv2LE8++aTYwCGkCoXNRUFBgVdLIXA9SFssFp588knMZjMpKSk888wzREZGLjk1CPPB58+f549//CPXrl3jgQce4ODBgyQlJSGXy5flWaNSqcjKyrrld4WGhuJwOJifn6etrW3J66mpqZSVlbF//342bdrk8QxaZ2cn9fX1XLly5ZaUbWdnJ11dXTz//POkpqYSGhqKXC6no6MDq9WKw+EQZ8CVSiXJycn84he/ID093SNrCw8P57vf/S4JCQmEhISIKXGJRILNZuONN97g17/+NaOjozz++OOsWbPGa6nUG/FacOzp6eHSpUs8/fTTzM7OkpKSwsGDB1m7di2pqanLNjx6I+vWraOoqAi5XE5kZOSS328ymRgdHeXs2bOYzWYyMjLYv38/CQkJK9696HQ6OX/+PCdOnKCh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mJqaoqKiwq+Dut1uN62trZw6dYqGhgYAQkNDRbhULpeLugdpVNPQ0BDp6elzDvT+YmpqinPnznHkyBFGR0cxm83o9XqioqKIiooiLS2NVatWkZWVRUFBASUlJYSFhS2aozA0NER9fT3Hjh1jZGRkjgEKCwsjMjKSuLg44uLi5hiksLAw4uPjyc/PF47ExMQE27ZtIyUlxa9GfHBwELfbTWpqKiqViqmpKRwOBwqFgvj4eMLDw9FoNMTHx5OVlUVGRgYZGRl+tR93bBzlcjnp6eniFARw//33k5WV9aF/ZnR0lKamJg4cOEBdXR0TExP09/eTkZFx2xunP3G73QwPDzM8PAzAiRMnxGuPPvooOTk54sZdu3YtW7duvaPPk/Icf/u3f4vdbmdkZIT333+fZ599lv7+furq6njooYeWJAf6UbjdblpaWhgfH19wztqHIZPJGB8fFxvmnfBJDwgf5pHIZDJUKhVhYWGLNdbqM4nP58NgMNDc3My//du/8eyzz5KXl4dGo6Grq4vBwUH6+/upr6+ns7OT8fFxxsbGsFgswhuJiIggNDQUrVZLSkoKv/3tb0lPT/fb+iwWC2+//TavvvoqdrudhIQE0tPTRSQoPDyc6OhoKisrmZycpKmpid/97nd873vfo6SkxC/rmI1er+d3v/sdjY2N2O12goKCyMrK4u6776aqqorNmzej0+mWJO/t8/l47733ePfdd6mtrZ33uk6nY/369Tz00EPs3LlzWfYcr9dLcHAwOTk5FBcXk5WVxZUrV4M47Q0AACAASURBVBgdHUWtVvOlL32J1NRUoqOjyczMXLQ13vHfGhQUJIocpD7H3t5etFotsbGxC/6Z2NhYNmzYQFFREefOnWNgYID169cTERFxp8v5RJhMJrq6uj5RzPytt96a09fz7W9/+46N42yUSiUajQatVktQUBAjIyOcOXMGp9O5KOGnW6Wnp4f6+nqef/554VF/GJLhycjIIDs7m7Vr1xIXF0dxcfGH3hO3glwup7CwkPvuuw+4UVAwNjbG5cuXxXukMLXD4UCj0bB+/foF/67g4GCSkpKorKz8zJWgLxY2m40XX3yR9957j6amJvR6PYODg9jtdrq6uvjZz36G1WoVBSZerxeVSkVKSgo1NTXExsayYsUKKisr0Wg0oujNX8UmTqcTo9HI008/zenTp7FYLERH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\n",
      "text/plain": [
       "<Figure size 576x576 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_digits(instances, images_per_row=10, **options):\n",
    "    size = 28\n",
    "    images_per_row = min(len(instances), images_per_row)\n",
    "    images = [instance.reshape(size,size) for instance in instances]\n",
    "    n_rows = (len(instances) - 1) // images_per_row + 1\n",
    "    row_images = []\n",
    "    n_empty = n_rows * images_per_row - len(instances)\n",
    "    images.append(np.zeros((size, size * n_empty)))\n",
    "    for row in range(n_rows):\n",
    "        rimages = images[row * images_per_row : (row + 1) * images_per_row]\n",
    "        row_images.append(np.concatenate(rimages, axis=1))\n",
    "    image = np.concatenate(row_images, axis=0)\n",
    "    plt.imshow(image, cmap = matplotlib.cm.binary, **options)\n",
    "    plt.axis(\"off\")\n",
    "\n",
    "\n",
    "# 查看数字3和数字5的例子\n",
    "cl_a, cl_b = 3, 5\n",
    "X_aa = X_train[(y_train == cl_a) & (y_train_pred == cl_a)]\n",
    "X_ab = X_train[(y_train == cl_a) & (y_train_pred == cl_b)]\n",
    "X_ba = X_train[(y_train == cl_b) & (y_train_pred == cl_a)]\n",
    "X_bb = X_train[(y_train == cl_b) & (y_train_pred == cl_b)]\n",
    "\n",
    "plt.figure(figsize=(8,8))\n",
    "plt.subplot(221); \n",
    "plot_digits(X_aa[:25], images_per_row=5)\n",
    "plt.subplot(222); \n",
    "plot_digits(X_ab[:25], images_per_row=5)\n",
    "plt.subplot(223);\n",
    "plot_digits(X_ba[:25], images_per_row=5)\n",
    "plt.subplot(224); \n",
    "plot_digits(X_bb[:25], images_per_row=5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 左侧两个是被分类为3的图片\n",
    "# 右侧两个是被分类为5的图片\n",
    "# 大多数错误分类的图片看起来还是非常明显的错误\n",
    "# 原因：SGD是一个线性模型，它所做就是为每个像素分配一个各个类别的权重，当它看到新的图像，将加权后的像素强度汇总，从而得到一个分数进行分类\n",
    "# 数字3和5在一部分像素位上有区别，所以分类器很容易将其弄混\n",
    "# 通过上面图像，如果书写3 的连接点左移，分类器可能将其分类为数字5，这个分类器对图像位移和旋转敏感\n",
    "# 减少混淆的方法之一，就是对图像进行预处理，确保位于中心位置并且没有旋转"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多标签分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 为每个实例产生多个类别 ，例如 照片识别多个人脸\n",
    "# 分类器经过训练可以识别小红，小白，小军，一张照片 里有 小红，小白\n",
    "# 经过分类器，应该输出[1,1,0]， 是小红，是小白，不是小军\n",
    "# 输出多个二元标签的分类系统称为多标签分类系统"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "           metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
       "           weights='uniform')"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "y_train_large = (y_train >= 7)\n",
    "y_train_odd = (y_train % 2 == 1)\n",
    "y_multilabel = np.c_[y_train_large, y_train_odd]\n",
    "\n",
    "knn_clf = KNeighborsClassifier()\n",
    "knn_clf.fit(X_train, y_multilabel)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False,  True]])"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# knn支持多标签分类，不是所有的分类器都支持\n",
    "knn_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9767021784027258"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 评估多标签分类器方法很多，方法之一就是测量每个标签的F1分数，或者其他二元分类器指标，然后简单平均\n",
    "y_train_knn_pred = cross_val_predict(knn_clf, X_train, y_multilabel, cv=3)\n",
    "f1_score(y_multilabel, y_train_knn_pred, average=\"macro\")\n",
    "# 0.977090"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 上面假设了所有标签都同等重要，也可以给每个标签设置一个权重（该目标标签实例的数量），设置average='weighted'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多输出分类"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 例子：构建一个系统去除图片中的噪声，输入一张有噪声的图片，它将输入一张干净的数字图片，分类器输出是多个标签，一个像素一个标签，每个标签多个值0到255"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 增加噪声，目标将图片还原为原始图片 创建训练集和测试集\n",
    "noise = np.random.randint(0, 100, (len(X_train), 784))\n",
    "X_train_mod = X_train + noise\n",
    "noise = np.random.randint(0, 100, (len(X_test), 784))\n",
    "X_test_mod = X_test + noise\n",
    "y_train_mod = X_train\n",
    "y_test_mod = X_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "some_index = 5500\n",
    "plt.subplot(121);plt.imshow(X_test_mod[some_index].reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.subplot(122);plt.imshow(y_test_mod[some_index].reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "knn_clf.fit(X_train_mod, y_train_mod)\n",
    "clean_digit = knn_clf.predict([X_test_mod[some_index]])\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(clean_digit.reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 作业二"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
